我必须将一个大文件拆分成2mb部分才能发送到服务器但我找不到任何方法。在角度或JavaScript上。现在我正在使用angularFileUpload来获取它并将其作为一个大文件发送。如果有人有线索请告诉我
答案 0 :(得分:3)
您必须使用HTML5文件API。有关它的更多信息,您可以找到here。我无法提供任何代码示例,主要是因为我不知道您的服务器的外观。您必须为用户提供一个事务令牌,他必须向您发送块号,块数据和令牌,这样您就可以在服务器上重新组装它。
答案 1 :(得分:0)
您应该可以使用FileAPI。我相信它为不支持HTML5文件API的旧浏览器提供了垫片。
以下是example中使用的angular-file-upload repo。
答案 2 :(得分:0)
您可以尝试下面的代码,这可能有助于您将文件读取为大块。 在HTML文件中。这里的Filereader是作为文本读取的,但是我们可以选择其他方式,例如作为缓冲区读取等。
和ts文件
uploadDoc(event) {
let lastChunksize = 0;
var file = event.target.files[0];
this.readFile(file, lastChunksize, this.myCallback.bind(this));
}
myCallback(file, lastChunksize, result) {
lastChunksize = lastChunksize + 20000;
if(result) {
//Add you logic what do you want after reading the file
this.readFile(file, lastChunksize, this.myCallback.bind(this));
} else {
///end recursion
}
}
readFile(file,lastChunksize: number, callback) {
var fileBlob = file.slice(lastChunksize,lastChunksize+20000);
if(fileBlob.size !=0) {
let fileReader = new FileReader();
fileReader.onloadend= (result)=>{
return callback(file,lastChunksize,fileReader.result)
}
fileReader.readAsText(fileBlob);
}else {
return callback(file,lastChunksize,false);
}
}