2017-07-29 57 views
2

发送图像到“火力地堡存储”系统......“Firebase存储”,用于图像 - 但是,获取实际的URL?

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 } 

然而,最终的结果是网址,这是这样的:

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" 
+2

您可以分享用于上传图片并获取该网址的代码吗? –

+0

您可能正在重定向。尝试使用“curl -D”headers.txt“URL”来查看具体操作方式。 – barrycarter

+0

那么,当你运行'curl -D headers.txt'URL'> output.txt'时会发生什么? header.txt和output.txt的内容是什么?请记住,只要服务器将MIME类型设置为“image/jpeg”,文件扩展名无关紧要。服务器也可以将MIME类型设置为“octet-stream”或其他。 – barrycarter

回答

1

您的代码上传原始二进制数据存储,而关于它的内容类型。在使用putData时,Storage SDK不会试图解释该NSData blob的内容。但是,如果使用putFile,则可以推断内容类型将为

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

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

+0

Wowser!我们会检查出DougStevenson - 杰出! – Fattie

相关问题