簡體   English   中英

HTML 5定位標記下載的文件不完整?

[英]HTML 5 anchor tag download incomplete file?

我正在使用angular和ASP.NET Web API允許用戶下載服務器上生成的文件。

HTML標記下載鏈接:

 <img src="/content/images/table_excel.png">
 <a ng-click="exportToExcel(report.Id)">Excel Model</a>
 <a id="report_{{report.Id}}" target="_self"></a>

最后的錨標記在那里用作自動單擊事件的占位符。 可見的錨點調用exportToExcel方法以發起對服務器的調用並開始創建文件。

$scope.exportToExcel = function(reportId) {
    reportService.excelExport(reportId, function (result) {
        var url = "/files/report_" + reportId + "/" + result.data.Model.fileName;
        var dLink = document.getElementById("report_" + reportId);
        dLink.href = url;
        dLink.setAttribute('download', result.data.Model.fileName);
        dLink.click();
    });
}

Web API代碼創建一個Excel文件。 服務器上的文件約為279k,但在客戶端上下載時僅為7k。 我首先想到的是,在文件完全寫入之前,可能會發生自動單擊。 因此,我在click事件周圍添加了10秒的$timeout作為測試。 它失敗,結果相同。

這似乎僅在我們的遠程質量檢查服務器上發生。 在本地開發服務器上,我始終會取回整個文件。 我不知道為什么會發生這種情況。 我們具有類似的功能,即從數據庫Blob構造文件並將其保存到本地磁盤以供下載。 客戶端下載使用相同的方法,這似乎很好用。 我想知道是否還有其他人遇到過類似問題。

更新在SilentTremmor發表評論后,我們認為它實際上可能是IIS或某種Sever問題。 最初,我們認為不可能,但是經過一番挖掘后,也許是可行的。 客戶端代碼的實例似乎只允許下載7k數據。 不管我們嘗試下載什么,結果都是一樣的。

事實證明,API應用程序正在將文件寫入我們應用程序的其他實例。 客戶端代碼不知道,並且正在嘗試下載不存在的文件。 因此,當下載鏈接創建文件時,該文件為空,因此文件較小。

暫無
暫無

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

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