Мне нужно отправить изображение на мой сервер в виде файла, но я не могу понять, как это сделать. Я использую плагин nativescript-camera-plus и nativescript-background-http для отправки запроса. Это код.
onTakePictureTap() {
requestPermissions().then(
() => {
takePicture({ width: this.width, height: this.height, keepAspectRatio: this.keepAspectRatio, saveToGallery: this.saveToGallery, allowsEditing: this.allowsEditing })
.then((imageAsset: any) => {
this.cameraImage = imageAsset;
let that = this;
imageAsset.getImageAsync(function (nativeImage, ex) {
if (ex instanceof Error) {
throw ex;
} else if (typeof ex === "string") {
throw new Error(ex);
}
let imgPhoto = new ImageSource();
imgPhoto.fromAsset(imageAsset).then((imgSrc) => {
Здесь я установил nativescript-background-http
var bghttp = require("nativescript-background-http");
var session = bghttp.session("image-upload");
let token = JSON.parse(appSettings.getString('token'));
Это запрос
var request = {
url: environment.apiUrl + 'users/1/photos',
method: "POST",
headers: {
"Content-Type": "form-data/File",
"Authorization": "Bearer " + token
},
description: "Uploading "
};
Это задача, я отправляю изображение и запрос
var task = session.uploadFile(imgSrc, request);
task()
},
err => {
console.log('Error getting image source: ');
console.error(err);
alert('Error getting image source from asset');
});
});
}, (error) => {
console.log("Error: " + error);
});
},
() => alert('permissions rejected')
);
}
Я думаю, проблема в том, что он отправляется как ImageAsset, а не как «файл» (но я не уверен). Я не думаю, что мне нужно менять тип файла, мне просто нужно дать ему знать, что это «Файл», как я делаю в почтальоне
Вот как это выглядит в почтальоне (это работает)