2017-10-27 8 views
0

4+角度でブロブ応答タイプを保存します:どのように私は、だから私はそうのように、私の角度のファイルに戻りAPIを呼び出しています

getFile(fileInformation) { 
    const req = new HttpRequest('POST', 'filedownload', fileInformation, { reportProgress: true, responseType: "blob" }); 
    return this.http.request(req); 
} 

とAPIコントローラ(で私はthis SO top answerに従っ)このステップを把握:

Public Function GetFile(fileInformation As FileDto) As HttpResponseMessage 
    Dim filePath = Path.Combine(FileConstants.FilePath, fileInformation.FileType, fileInformation.FileName) 
    Dim fileStream = New FileStream(filePath, FileMode.Open, FileAccess.Read) 

    Dim result = new HttpResponseMessage(HttpStatusCode.OK) 
    result.Content = New StreamContent(fileStream) 
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream") 

    Return result 
End Function 

この呼び出しから返された結果はHttpResponseのものであり、体がタイプBlobです。

HttpResponse: { 
    blob: { 
    size: 289940, 
    type: "application/octet-stream" 
    }, 
    headers: ..., 
    status: 200, 
    ... 
} 

どのように私は今、私が応答を受信角度成分にこのファイルのダウンロードをトリガーするのですか?

+0

を呼び出します'FileSaver.saveAs(blob、fileName);を実行してください; –

+0

可能であれば、外部ライブラリのダウンロードを見る前に、これをAngular内でネイティブに行うオプションを検討したいと思います。しかし、あなたの応答に感謝し、私は外部のライブラリなしでこれを行うことができない場合FileSaverを使用して調べます。 –

答えて

2

install FileSaver from npm。

npm install --save file-saver 

あなたはブロブインスタンスを持っているあなたのクラスへのインポート、それを

import * as FileSaver from 'file-saver'; 

それからちょうど(4)私は単にFileSaverをインストールした後、私のクラスにインポートしAngular2に

FileSaver.saveAs(blob, fileName); 
+0

あなたは私にこのパッケージでたくさんの醜いコードを保存しました。ありがとう! – RVP

+0

このパッケージは私にもたくさんの醜いコードを保存しました。 :D –

関連する問題