Я хотел бы загрузить изображение на свой сервер с помощью FormData, но поскольку Ionic DEVAPP и Ionic VIEW не поддерживают плагины для файлов, передачи файлов и загрузки файлов, мне нужно сделать это, используя только Angular Http или HttpClient.
При использовании DestinationType.FILE_URI я могу получить внутренний URL-адрес из файла и отобразить его на объекте img, но я не могу создать объект TypeScript File из этого URL-адреса без собственного файла, пути к файлу и плагинов для передачи файлов.
getImage() {
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.FILE_URI,
sourceType: this.camera.PictureSourceType.PHOTOLIBRARY
}
this.camera.getPicture(options).then((imageData) => {
this.imageURI = this.sanitizer.bypassSecurityTrustUrl(imageData)
}, (err) => {
console.log(err)
this.presentToast(err)
})
}
используя этот шаблон
<ion-content padding>
<ion-item>
<p>{{imageFileName}}</p>
<button ion-button color="secondary" (click)="getImage()">Get Image</button>
</ion-item>
<ion-item>
<h4>Image Preview</h4>
<img style="display:block" [src]="imageURI" *ngIf="imageURI" alt="Ionic File" width="300" />
</ion-item>
<ion-item>
<button ion-button (click)="uploadFile()">Upload</button>
</ion-item>
</ion-content>
При использовании DestinationType.DATA_URL я могу отобразить изображение, но не могу создать объект TypeScript File, необходимый с исходным именем файла, чтобы добавить изображение к FormData, используемому в моей службе загрузки в моем Ionic App.
Кажется, я могу найти способ создать этот объект TypeScript File с исходным именем файла из FILE_URI и данными в кодировке base64 из DATA_URL, используя camera.getPicture из собственного плагина камеры cordova.
Сервис для загрузки файла в мою серверную часть просто использует этот подход:
postImage(image: File): Observable<any> {
const formData = new FormData()
.append('file', image, image.name)
}
return this.httpClient.post<any>(this.myUrl,formData)
}
И getImage из компонента myPage.ts, и postImage из uploadservice.ts работают нормально, но я не могу найти способ создать объект File из camera.getPicture imageData