[英]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.