离子formData追加显示服务器中的空

时间:2018-08-10 15:19:49

标签: ionic-framework ionic3 laravel-5.1

我正在尝试使用formData上传图像。该API工作正常。但是数据在服务器中显示为空。 我的功能是

  capture_dl_front(){
    this.camera.getPicture(this.cameraOptions)
      .then(imageData => {
        this.customer.dl_front = normalizeURL(imageData);
        this.upload_dl_front(imageData);
      }, error => {
        this.func.showAlert('Error',JSON.stringify(error));
      });
  }
  upload_dl_front(imageFileUri: any): void {
    this.file.resolveLocalFilesystemUrl(imageFileUri)
      .then(entry => (<FileEntry>entry).file(file => this.readFile_dl_front(file)))
      .catch(err => console.log('Error',JSON.stringify(err)));
  }
  private readFile_dl_front(file: any) {
    const reader = new FileReader();
    reader.onloadend = () => {
      const imgBlob = new Blob([reader.result], { type: file.type });
      this.dl_front_imageUri = imgBlob;
      this.dl_front_imageName = file.name;
      alert(this.dl_front_imageName)
      const img = new FormData();
      img.append('image', this.dl_front_imageUri, this.dl_front_imageName)
      this.api.test(img).then(data=>alert("final: "+data))
    };
    reader.readAsArrayBuffer(file);
  }

我的api函数是

 test(image){
    let headers = new HttpHeaders({
      'Content-Type': 'application/x-www-form-urlencoded',
    });
    return new Promise( resolve => {
      this.http.post(url, image, { headers: headers})
        .subscribe(
          data => {
            resolve(data['message']);
          },
          error => {
            resolve(error.statusText);
          }
        );
    });
  }

我正在以laravel服务器的身份获取文件

$image = $request->file('image');

但是我在image参数中得到了空值。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

您应该删除api调用中的标头。

 test(image){
    return new Promise( resolve => {
      this.http.post(url, image)
        .subscribe(
          data => {
            resolve(data['message']);
          },
          error => {
            resolve(error.statusText);
          }
        );
    });
  }