Node.js - 在本地下载并保存 PDF 文件以供离线使用 - 文件已损坏
Node.js - download and save PDF file locally for offline - file damaged
我目前有一个使用 Node Webkit 构建的桌面应用程序。当用户在线时,应用程序将从服务器打开 PDF 文件。然后我将这些文件保存在本地,以便在离线时使用它们。
我正在使用 Node.js 文件系统的 fs.writeFile() 在本地保存 PDF,但是当尝试通过应用程序打开它时,PDF 是空白的。当我尝试直接从文件夹中打开它时,出现以下错误。
谁能指点一下?
//save PDF file for offline
function saveFile(pdfvar) {
var filename = 'test.pdf';
fs.writeFile(filename, pdfvar);
}
//open PDF in new window
$('#stage').on('click', '#pdflink', function(event){
var pdfvar = (this.getAttribute('data-pdffile'));
window.open(pdfvar, "_blank");
if(online===true){
saveFile(pdfvar);
}
});
您是否将 PDF 的全部内容保存在 DOM 元素属性 this.getAttribute('data-pdffile')
中?这是它可能损坏的地方。
当你打电话给
window.open(pdfvar, "_blank");
内容还不能这样打开。应该先转为base64编码url.
window.open('data:application/pdf,' + escape(pdfvar));
更新:
实际问题是 OP 试图使用 URL 在 "pdfvar"
中保存文件
fs.writeFile(filename, pdfvar);
但创建的文件仅包含 URL 本身。需要先使用 http 库下载文件:
- How to download a file with Node.js (without using third-party libraries)?
我目前有一个使用 Node Webkit 构建的桌面应用程序。当用户在线时,应用程序将从服务器打开 PDF 文件。然后我将这些文件保存在本地,以便在离线时使用它们。
我正在使用 Node.js 文件系统的 fs.writeFile() 在本地保存 PDF,但是当尝试通过应用程序打开它时,PDF 是空白的。当我尝试直接从文件夹中打开它时,出现以下错误。
谁能指点一下?
//save PDF file for offline
function saveFile(pdfvar) {
var filename = 'test.pdf';
fs.writeFile(filename, pdfvar);
}
//open PDF in new window
$('#stage').on('click', '#pdflink', function(event){
var pdfvar = (this.getAttribute('data-pdffile'));
window.open(pdfvar, "_blank");
if(online===true){
saveFile(pdfvar);
}
});
您是否将 PDF 的全部内容保存在 DOM 元素属性
this.getAttribute('data-pdffile')
中?这是它可能损坏的地方。当你打电话给
window.open(pdfvar, "_blank");
内容还不能这样打开。应该先转为base64编码url.
window.open('data:application/pdf,' + escape(pdfvar));
更新:
实际问题是 OP 试图使用 URL 在 "pdfvar"
中保存文件fs.writeFile(filename, pdfvar);
但创建的文件仅包含 URL 本身。需要先使用 http 库下载文件:
- How to download a file with Node.js (without using third-party libraries)?