我有一些上传代码,可以从文件输入字段中获取文件并上传
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))
但是我不确定如何实现。
答案 0 :(得分:0)
我认为您已经导入了这些软件包import { File } from '@ionic-native/file'
在代码中,您已将数据类型声明为files: File[]
这是对象类型不匹配,您只需将其声明为files: any
或files
答案 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。