使用angular拆分要上传的大文件

时间:2015-01-14 16:27:03

标签: javascript angularjs angular-file-upload

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

3 个答案:

答案 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);
    }
   }