2017-03-28 8 views
0

以下のコードでは、iframeに画像をダウンロードできません。代わりに、ローカルドライブにダウンロードしました。 JSでfirebaseのストレージファイルをiframeにダウンロードする

storageRef.child('images/CopyPerson.jpg').getDownloadURL().then(function(url) { 
    var iframe1 = document.getElementById('downloadedCourse'); 
    iframe1.src = url; 
}).catch(function(error) { 
    // Handle any errors 
}); 

HTMLでは:私はIMGの代わりに、インラインフレームを使用している場合を想定として

<iframe id="downloadedCourse" width="800" height="500" src=""></iframe> 

しかし、それは動作します。 iframeを使う必要がある理由は、私がpdfファイルをダウンロードしようとしているからです。なぜ誰も知っていますか?

答えて

0

これは、content-dispositionヘッダーがinlineの代わりにattachmentに設定されているためです。これを変更するメタデータを設定して、それが機能するかどうか確認してください:

// Obviously you only have to set the metadata once per file 
// Not every time you download the URL 
storageRef.child('images/CopyPerson.jpg').updateMetadata({ 
    "contentDisposition": "inline" 
}).then(function() { 
    return storageRef.child('images/CopyPerson.jpg').getDownloadURL() 
}).then(function(url) { 
    var iframe1 = document.getElementById('downloadedCourse'); 
    iframe1.src = url; 
}); 
+0

ありがとうございます。私は成功しなかった2、3日を試みた。まず、setMetadataは認識されなかったので、私はupdateMetadataを試しましたが、URLコンテンツはiframeで表示する代わりにダウンロードするだけです。私はこれがURL自体に起因すると考えました。ブラウザでそのURLを直接コピーしても、それはまだファイルをダウンロードするだけなので。まだ戦っている... – bxff01

+0

これは、ブラウザが 'contentType'と' contentDisposition'をどのように解釈するのかと関係しています。 –

関連する問題