我制作了一个使用PDF.js显示PDF文件的网络应用程序(使用HTML5 FileReader从本地磁盘打开):
var fileReader;
fileInput.addEventListener("change", function(e){
var files = e.target.files;
if (!files || files.length === 0) return;
var file = files[0];
// Read the local file into a Uint8Array.
fileReader = new FileReader();
fileReader.onload = function(e){
var uint8Array = new Uint8Array(e.target.result);
// Use uint8Array to open PDF in PDF.js
};
fileReader.readAsArrayBuffer(file);
});
根据用户的要求,我想将加载的文件传输到服务器以修改PDF:
var xhr = new XMLHttpRequest();
xhr.open("POST", "/uploadPdf");
xhr.onreadystatechange = function(){
if (xhr.readyState === 4){
if (xhr.status === 200){
console.log(xhr.responseText);
}
else {
console.log(xhr);
}
}
};
xhr.send(fileReader.result);
这很好用,直到我尝试使用大型PDF(Chrome中为65 MB) - 浏览器在上传文件时冻结约30秒。
对替代方法的任何建议都不会冻结浏览器,也不要求用户再次选择文件,最好是使用进度函数?