簡體   English   中英

為什么使用 javascript 下載后本地文件顯示已損壞?

[英]Why local file is showing corrupted after downloading using javascript?

下午好,
場景:我在本地系統上有 pdf 文件,當用戶單擊按鈕時,我希望它被下載。 但是在下載文件后打開時顯示已損壞。 發布此查詢時,我注意到正在下載的文件大小為 1KB,原始文件大小為 28KB。 我不明白為什么?
我在后端創建 excel 文件並保存在用戶位置,因為由於數據量巨大,它需要花費大量時間,因此一旦創建文件,用戶就可以下載該文件。

下面是JS的代碼。

function download() {
    var filename="output.pdf";
    var element = document.createElement('a');
    var fileloc="C:\\ebooks\\PDF\\abc.pdf";
    element.setAttribute('href','data:text/plain;charset=utf-8, ' + 
    encodeURIComponent(fileloc));
    element.setAttribute('download', filename);
    document.body.appendChild(element);
    element.click();
}

原文件很好。 請糾正我做錯了什么。

您正在創建的data:方案 URL 解析為包含文本C:\ebooks\PDF\abc.pdf純文本文檔(不是 PDF)。

您正在使用.pdf擴展名保存此文件,因此當您嘗試打開它時,您的 PDF 閱讀器會嘗試將其讀取為 PDF(事實並非如此)。

如果要將文件的內容保存在指定的路徑中,則需要:

讓用戶 select 使用<input type="file"> (因為 JS 不允許訪問用戶磁盤上的文件,除非他們 select 明確地使用FileReader.readAsDataURL()方法生成 URL 。


如果你是在服務器上創建文件,如你所說,那么就不需要構造data: scheme URL,你可以直接使用指向服務器上文件的https: scheme URL。

暫無
暫無

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

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