“Firebase存储”,用于图像 – 但是,获取实际的URL?

将图像发送到“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" 

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

如果您需要使用putData ,请尝试使用putData:metadata: 指定一些元数据以及上传。

在Firebase控制台中,您可以通过select它来检查上传文件的内容types。 它应该在右侧面板中读取图像/ JPEG。