Как я могу загрузить несколько файлов с разными типами файлов на сервер в приложении ionic 3? - PullRequest
3 голосов
/ 09 марта 2019

Я хочу загрузить несколько файлов, используя различные расширения (.jpg, .png, .doc, .pdf,) в Ionic 3. Как я могу загрузить несколько файлов на сервер одновременно. Если какое-либо решение доступно, пожалуйста, поделитесь здесь в ближайшее время. Было бы очень признательно.

Мой код здесь:

addImageORFileToEntry() {
 console.log("addImageORFileToEntry");

 if (this.plt.is('android')) {
  console.log("add files or image in android");

  this.fileChooser.open().then(uri => {
    // console.log("file uri", uri);
    this.filePath.resolveNativePath(uri).then((filePathResult)=>{
      console.log("file filePathResult", filePathResult);
      var fileName = filePathResult.substr(filePathResult.lastIndexOf('/') + 1);
      console.log("android file fileName", fileName);

      this.displayFile = fileName;
      console.log("this.displayFile" +JSON.stringify(this.displayFile));
      let onlyfilename = this.displayFile.split(".");
      // console.log("onlyfilename[0]" +onlyfilename[0]);
      let name = onlyfilename[0];
      var fileExtension = fileName.substr(fileName.lastIndexOf('.') + 1);
      console.log("android file fileExtension", fileExtension);
      this.extension = fileExtension;

      let filePathurl : string = filePathResult;
      // console.log("file uri filePathurl", filePathurl);

      this.base64.encodeFile(filePathurl).then((base64File: string) => {
        // console.log("file uri base64File", base64File);
        this.fileData = base64File;
        var newStringVal = this.fileData.replace(/ /g, "");
        // this.fileData = this.fileData.replace(/\s+/g, "");
        console.log("file uri this.fileData", this.fileData);

        let splitbase64 = this.fileData.split(',');
        // console.log("add files in android splitbase64", splitbase64[1]);
        this.getSplitbase64 = splitbase64[1];

        // console.log("add files in android this.getSplitbase64", this.getSplitbase64);
        // this.extensions.push({'extensions': this.extension})
        this.photos.push({'filename' : name, 'filestring': newStringVal, 'filetype': this.extension});
        console.log("file uri photos", this.photos);


      }, (err) => {
        console.log(err);
      });
    });
  }).catch(err => {
    console.log('Error', err);
  });
} else if (this.plt.is('ios')) {
  console.log("add files or image in ios");
  this.filePicker.pickFile().then(uri => {
    console.log("ios file uri" +JSON.stringify(uri));
    let correctPath = uri.substr(0, uri.lastIndexOf('/') + 1);
    console.log("ios file correctPath" +JSON.stringify(correctPath));
    let currentName = uri.substring(uri.lastIndexOf('/') + 1);
    console.log("ios file currentName" +JSON.stringify(currentName));
    let onlyfilename = currentName.split(".");
    console.log("onlyfilename[0]" +onlyfilename[0]);
    let name = onlyfilename[0];
    console.log("name" +name);
    let extension = onlyfilename[1];
    console.log("extension" +extension);
    this.file.readAsDataURL("file:///" + correctPath, currentName).then((base64File: string) =>{                           
      // console.log("ios file base64" +JSON.stringify(base64));
      this.fileData = base64File;
      var newStringVal = this.fileData.replace(/ /g, "");
      console.log("ios file fileData" +this.fileData);
      this.photos.push({'filename' : name, 'filestring': newStringVal, 'filetype': extension});
      console.log("file uri photos", this.photos);
    })
  });
}

}

и когда я загружаю файл, используя http пост-запрос с rowData, получаю ошибку: enter image description here

Я думаю, что большой файл не конвертируется в правильную строку base64. Он хорошо работает с некоторыми файлами и не работает с некоторыми файлами. Как я могу решить эту проблему. Пожалуйста, помогите мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...