簡體   English   中英

有沒有一種方法可以使用Angle Filesaver下載任何類型的文件?

[英]Is there a way to download any kind of file using angular filesaver?

我正在為我的應用程序使用node.js和angular.js,並且嘗試使用Blob和fileSaver.js通過瀏覽器下載文件。

我在應用程序的其他部分中使用了這些文件,以便在創建Blob對象時下載文本文件和pdf文件以指定正確的類型,而沒有任何問題,但是在當前部分中,我需要支持任何類型的文件,但我不知道如果它是可能的。

例如,我嘗試下載帶有和不帶有type:image/png的圖像文件,結果是圖像損壞-在文本編輯器中檢查該圖像並將其與原始文件進行比較,結果顯示許多字節已更改。

以下是我使用的代碼段:

服務器

fs.readFile(/* snipped file path */, function(err, data){
    if(err){
        /* handle error */
    }
    else{
        res.send(data);
    }
});

客戶

$http.get(/* endPoint URL */)
    .success(function(result){
        var data = new Blob([result], {type: 'image/png'});
        FileSaver.saveAs(data, filename);
    });

幾個問題:

  1. 我需要為Blob指定類型嗎? 如果是這樣,我是否也需要在服務器上指定它(確定它很麻煩)? 我不能只在兩端跳過嗎?
  2. 是什么導致圖像測試導致文件損壞? 我是否缺少某些content-type標題或其他內容?

嘗試在您的GET請求中添加{contentType: 'arraybuffer'}並從Blob定義中刪除類型,如下所示:

$http.get(/* endPoint URL */, {contentType: 'arraybuffer'})
  .success(function(result){
      var data = new Blob([result]);
      FileSaver.saveAs(data, filename);
  });

編輯:從Blob中刪除了冗余類型定義)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM