“文件”类型的参数不能分配给“字符串|类型”的参数。在formData中的Blob

时间:2019-03-11 12:26:45

标签: angular ionic-framework ionic4

我有一些上传代码,可以从文件输入字段中获取文件并上传

  basicUpload(files: File[]){
    var formData = new FormData();
    Array.from(files).forEach((file) => formData.append('file', file))
    this.http.post('https://file.io', formData)
      .subscribe(event => {  
        console.log('done')
      })
  }

这可行,我可以从浏览器上载文件,但是当我尝试为本机平台准备代码时。我收到此错误

Argument of type 'File' is not assignable to parameter of type 'string | Blob'.
  Type 'File' is not assignable to type 'Blob'

我认为我需要在这一行上键入文件

Array.from(files).forEach(file => formData.append('file', file))

但是我不确定如何实现。

3 个答案:

答案 0 :(得分:0)

我认为您已经导入了这些软件包import { File } from '@ionic-native/file' 在代码中,您已将数据类型声明为files: File[] 这是对象类型不匹配,您只需将其声明为files: anyfiles

答案 1 :(得分:0)

我正在使用此代码上传离子照片。它实际上是在将图片转换为base64

openCamera(isGallery: boolean) {
let options: CameraOptions = {
  quality: 100,
  destinationType: this.camera.DestinationType.DATA_URL,
  encodingType: this.camera.EncodingType.JPEG,
  mediaType: this.camera.MediaType.PICTURE
}

const optionsGallery: CameraOptions = {
  quality: 100,
  destinationType: this.camera.DestinationType.DATA_URL,
  encodingType: this.camera.EncodingType.JPEG,
  mediaType: this.camera.MediaType.PICTURE,
  sourceType: this.camera.PictureSourceType.SAVEDPHOTOALBUM
}

this.camera.getPicture(isGallery? optionsGallery : options).then((imageData) => {
  let base64Image = 'data:image/jpeg;base64,' + imageData;
  let id = 1;
  if (this.pictures.length > 0) {
   id = this.pictures[this.pictures.length - 1].id + 1;
  }
  let data = {
    id: id,
    src: base64Image,
    name: this.title
  };
  this.pictures.push(data);
}, (err) => {

});

}

答案 2 :(得分:0)

formData.append('file', file as Blob)

这应该有效。输入“文件”扩展 Blob。