2016-06-20 25 views
1

サーバーに保存されているファイルをダウンロードしようとすると問題が発生します。私は電話をかけ、必要なすべての情報を持っている適切な応答を得ます。ヘッダーにはコンテンツタイプとファイル名があり、ファイルボディは応答本体にあります。JavaScript/Typescriptを使用してサーバーからファイルをダウンロードする

私は何をしたいだけで、ダウンロードプロセスを作ることですので、私はHTTP呼び出しの応答であるdata、そうしようとした:それは簡単なフォーマットだとして、それが働いているテキストファイルの

// Get headers info 
let headers = data.headers 
let contentType = headers.get("Content-Type") 
let name = headers.get("name") 

// Initialize Blob 
let blob = new Blob([data.text()], {type: contentType}) 

// Make the download process 
let a = window.document.createElement("a") 
a.href = window.URL.createObjectURL(blob) 
a.download = name 
document.body.appendChild(a) 
a.click() 
document.body.removeChild(a) 

しかし、絵やPDFファイルのように、正しい名前とタイプのファイルをダウンロードしますが、それはうまく読み込めません。

アイデアはありますか?ありがとう!

+0

私はあなたがコンテンツのエンコードに問題を抱えていると思われます。しかし、コンテンツを指し示すiframeを挿入するほうが簡単ではないでしょうか? – symcbean

+0

コンテンツが第三者のiframeの場合は、私は避けるだろう、行く方法があります。私は、デベロッパーが長い間、モジュール化されたデザインを考えていた従来のアプリケーションをサポートすることに固執しています。今、彼らは巨大な頭痛や一般的に痛みを引き起こします。 – ste2425

+0

ええ、それは確かに簡単だと思います。残念ながら、私は物事がどのように設計されているこの方法を使用する必要があります。ファイルは別々のサーバ上にあり、それらを得るためのいくつかのパラメータを提供する必要があります。( – Guigui

答えて

1

はHREFおよびダウンロードのパラメータでタグをシミュレートすることにより、以下の方法を使用してそれを行うための方法を見つけた:)

how to set a file name using window.open

関連する問題