首页 文章

“Firebase存储”,用于图片 - 但是,获取实际的网址?

提问于
浏览
2

将图像发送到“Firebase存储”系统......

sr ... a StorageReference (ie, FIRStorageReference)
let task = sr.putData(data)
task.observe(.success) { [index] snapshot in
    guard let downloadURL: URL = snapshot.metadata?.downloadURL()
    else { .. err }

但是,最终结果是URL,如下所示:

https://firebasestorage.googleapis.com/v0/b/someapp.com/o/0.jpg?alt=media&token=113150a1-8152-666-666-fd00dc9e8734

它绝对完美 - 但是 -

该URL不是jpeg的URL - 它只是文件的URL . 点击它会导致你 getting a file download of the jpeg .

这看起来令人难以置信 - 对于所有其他在线存储(AWS等),您只需获得“jpeg的实际URL” .

这里有解决方案吗?


正如BC在下面问的那样,看着 Headers :

$ cat headers.txt
HTTP/1.1 200 OK
X-GUploader-UploadID: AEnB2Ur3b5CNUIWWZdwn-666slsPqTjJT3GF83m6sJ-mzx...666
Expires: Sat, 29 Jul 2017 23:22:38 GMT
Date: Sat, 29 Jul 2017 23:22:38 GMT
Cache-Control: private, max-age=0
Last-Modified: Sat, 29 Jul 2017 18:55:21 GMT
ETag: "9e4491f86bd78ee62d241d962893f666"
x-goog-generation: 1501354521940666
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 8992
x-goog-meta-firebaseStorageDownloadTokens: cd9e7a4b-6666-666-b6b8-5a700bed2e64
Content-Type: application/octet-stream
Content-Disposition: inline; filename*=utf-8''0.jpg
x-goog-hash: crc32c=z72qJQ==
x-goog-hash: md5=nkSR+GvXjuYtJB2WKJP6666==
x-goog-storage-class: STANDARD
Accept-Ranges: bytes
Content-Length: 8992
Server: UploadServer
Alt-Svc: quic=":443"; ma=2592000; v="39,38,37,36,35"

1 回答

  • 1

    您的代码将原始二进制数据上载到存储而不考虑其内容类型 . 使用 putData 时,Storage SDK不会尝试解释该NSData blob的内容 . 但是,如果使用 putFile ,将推断内容类型 .

    如果您需要使用 putData ,请尝试specifying some metadata以及使用 putData:metadata: 上传 .

    在Firebase控制台中,您可以通过选择它来检查上载文件的内容类型 . 它也应该在右侧面板中读取image / jpeg .

相关问题