为什么使用 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 解析为包含 文本 纯文本文档(不是 PDF) =33=] C:\ebooks\PDF\abc.pdf.
您正在使用 .pdf 扩展名保存此文件,因此当您尝试打开它时,您的 PDF reader 会尝试将其读取为 PDF(它不是)。
如果您想将文件的内容保存到您指定的路径,那么您需要:
让用户 select 使用 <input type="file">
文件(因为 JS 不允许访问用户磁盘上的文件,除非他们 select 明确地生成 URL 使用 the FileReader.readAsDataURL()
method.
如果你是在服务器上创建文件,如你所说,那么就不需要构建data:
方案URL,你可以直接使用https:
方案URL 指向服务器上的文件。
下午好,
场景:我在本地系统上有 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 解析为包含 文本 纯文本文档(不是 PDF) =33=] C:\ebooks\PDF\abc.pdf.
您正在使用 .pdf 扩展名保存此文件,因此当您尝试打开它时,您的 PDF reader 会尝试将其读取为 PDF(它不是)。
如果您想将文件的内容保存到您指定的路径,那么您需要:
让用户 select 使用 <input type="file">
文件(因为 JS 不允许访问用户磁盘上的文件,除非他们 select 明确地生成 URL 使用 the FileReader.readAsDataURL()
method.
如果你是在服务器上创建文件,如你所说,那么就不需要构建data:
方案URL,你可以直接使用https:
方案URL 指向服务器上的文件。