下午好,
場景:我在本地系統上有 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();
}
原檔案很好。請糾正我做錯了什么。
uj5u.com熱心網友回復:
您正在創建的data:方案 URL 決議為包含文本C:\ebooks\PDF\abc.pdf的純文本檔案(不是 PDF)。
您正在使用.pdf擴展名保存此檔案,因此當您嘗試打開它時,您的 PDF 閱讀器會嘗試將其作為 PDF 讀取(它不是)。
如果要將檔案的內容保存在指定的路徑中,則需要:
讓用戶使用a 選擇檔案<input type="file">(因為不允許 JS 訪問用戶磁盤上的檔案,除非他們明確選擇它們并使用FileReader.readAsDataURL().
如果您在服務器上創建檔案,如您所說,則無需構造data:方案 URL,您只需使用https:指向服務器上檔案的方案 URL。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/462501.html
上一篇:如何在陣列物件中呈現此陣列
