【问题标题】:How to prevent double uri encoding如何防止双重uri编码
【发布时间】:2020-01-04 14:47:30
【问题描述】:

我想通过 QT5 中的 Firestore URI 显示照片。我可以设置图像路径,但 QT5 对 URI 进行编码并将 %2F 转换为“/”,这会导致 firestore-URI 不正确。

该项目是为 python3 和 pyqt5 编写的。我已经尝试使用 QUrl 对象及其函数将其转换为 .url()、.toString()、.toDisplayString()。

urllib.request.urlretrieve(uri, path) 

我可以下载照片,但我想直接从 firestore 路径显示它而不将其保存到磁盘。

QML

Row {
   anchors.horizontalCenter: parent.horizontalCenter
   height: 128
   spacing: 16
   Image {
      source: root.image
      anchors.bottom: parent.bottom
   }
}

Python

url = QtCore.QUrl(user['photo']).toDisplayString()
print("user url: ", user['photo'])
print("QUrl: ", url)
messagebox.setProperty('image', user['photo'])

结果

user url:  https://firebasestorage.googleapis.com/v0/b/projectx-835b4.appspot.com/o/users%2FNTb2Wz2%2Fprofilepicture%2F1234.jpg?alt=media&token=3d3b25c4-78e1-48a9-a311
QUrl:  https://firebasestorage.googleapis.com/v0/b/projectx-835b4.appspot.com/o/users%2FNTb2Wz2%2Fprofilepicture%2F1234.jpg?alt=media&token=3d3b25c4-78e1-48a9-a311
file:///home/tux/projectsx/content/ThankYouView.qml:112:21: QML Image: Error transferring https://firebasestorage.googleapis.com/v0/b/projectx-835b4.appspot.com/o/users/NTb2Wz2/profilepicture/1234.jpg?alt=media&token=3d3b25c4-78e1-48a9-a311 - server replied: Bad Request

【问题讨论】:

  • 发布答案而不是指向评论。
  • 嘿丹尼尔。很高兴听到您找到了解决问题的方法。正如@eyllanesc 所说,您可以将解决方案发布为答案而不是您的问题吗? Stack Overflow 鼓励自我回答,这是帮助他人和赢得声誉的好方法。
  • @FrankvanPuffelen 谢谢你,下次我会做的。这是我在 Stack Overflow 上的第一篇文章 :-)
  • @Daniel现在就可以做,这样您就可以帮助社区的其他成员

标签: python pyqt pyqt5 qml


【解决方案1】:

通过将属性类型从字符串更改为url解决了问题

...
Item {
    id: root
    property url image
    ...
}
...

【讨论】:

    猜你喜欢
    • 2015-01-12
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2012-02-16
    相关资源
    最近更新 更多