【问题标题】:"Firebase Storage", for images - but, get the actual URL?“Firebase 存储”,用于图像 - 但是,获取实际 URL?
【发布时间】:2018-01-05 15:16:12
【问题描述】:

将图像发送到“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。单击它会导致您下载 jpeg 文件

这似乎令人难以置信 - 使用所有其他在线存储(AWS 等),您只会得到“jpeg 的实际 URL”。

这里有解决办法吗?


正如 BC 在下面询问的那样,查看标题:

$ 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"

【问题讨论】:

  • 您能否分享用于上传图片并获取该 URL 的代码?
  • 您可能正在被重定向。试试“curl -D 'headers.txt' URL”看看到底是怎么回事。
  • 那么,当您运行curl -D headers.txt 'URL' > output.txt 时会发生什么? headers.txt 和 output.txt 的内容是什么?请记住,只要服务器将 MIME 类型设置为“image/jpeg”,文件扩展名是什么并不重要。服务器也可能将 MIME-type 设置为“octet-stream”或其他内容。
  • 好一个@barrycarter 它就在那里
  • 好一个@DougStevenson 就在那里

标签: ios firebase firebase-storage


【解决方案1】:

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

如果您需要使用putData,请尝试使用specifying some metadataputData:metadata: 一起上传。

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

【讨论】:

    猜你喜欢
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2016-12-01
    • 2018-02-04
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多