拆分要使用角度上传的大文件

Split a big file to be upload using angular

本文关键字:文件 拆分      更新时间:2023-09-26

我必须将一个大文件分成 2MB 的部分才能发送到服务器,但我找不到任何方法。 在 Angular 或 JavaScript 上。现在我正在使用angularFileUpload来获取它并将其作为大文件发送。如果有人有线索,请告诉我

您必须使用 HTML5 文件 API。您可以在此处找到有关它的更多信息。我无法提供任何代码示例,主要是因为我不知道您的服务器外观如何。你必须给用户一个交易令牌,他必须向你发送区块编号、区块数据和代币,这样你就可以在服务器上重新组装它。

你应该能够使用 FileAPI。我相信它为不支持HTML5文件API的旧浏览器提供了一个垫片。

下面是在角度文件上传存储库中使用它的示例

你可以

试试下面的代码,这或许可以帮助你把文件读成块。在 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);
    }
   }