2017-07-29 21 views
2

...イメージの「Firebase Storage」 - 実際の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" 
+2

画像をアップロードしてそのURLを取得するために使用されたコードを共有できますか? –

+0

あなたはおそらくリダイレ​​クトされています。どのように正確に表示するには、 "curl -D 'headers.txt' URL"を試してください。 – barrycarter

+0

だから、 'curl -D headers.txt 'URL'> output.txt'を実行するとどうなりますか? headers.txtとoutput.txtの内容は何ですか?サーバがMIMEタイプを "image/jpeg"に設定している限り、ファイル拡張子が何であるかは関係ありません。また、サーバーがMIMEタイプを「オクテットストリーム」などに設定している可能性もあります。 – barrycarter

答えて

1

あなたのコードは、そのコンテンツタイプについてずにストレージへの生のバイナリデータをアップロードしています。 putDataを使用している場合、Storage SDKはそのNSDataブロブの内容を解釈しようとしません。ただし、コンテンツタイプputFileを使用した場合はと推定されます。

putDataを使用する必要がある場合は、specifying some metadataとアップロードのあとにputData:metadata:と入力してみてください。

Firebaseコンソールでは、アップロードしたファイルのコンテンツタイプを選択して確認できます。右側のパネルでもimage/jpegを読み込む必要があります。

+0

Wowser!我々はそれをチェックしますDougStevenson - outstanding !!!! – Fattie

関連する問題