Я могу загрузить файл на Android в веб-API C #, используя nativescript-camera
с nativescript-background-http
.
Я устанавливаю параметры следующим образом:
var params = [{ name: "image", filename: fileUri, mimeType: 'application/octet-stream' }];
...
И отправляю запрос:
let request = {
url: this.API_URL + "/UploadOctetFile",
method: "POST",
headers: {
"Authorization": accessTokenJson,
"Content-Type": "application/octet-stream",
"File-Name": imageName
},
description: "{ 'uploading': " + imageName + " }"
};
return this.session.multipartUpload(params, request);
В андроиде файл Uri естьвозвращается довольно простым способом:
takePictrue.then((imageAsset: ImageAsset) => {
Затем imageAsset.android
содержит файл uri, необходимый для отправки изображения.Однако для ios imageAsset.ios
- это PHAsset.Чтобы получить URI файла, я использую следующий код:
let manager = PHImageManager.defaultManager()
let options = new PHImageRequestOptions();
options.resizeMode = PHImageRequestOptionsResizeMode.Exact;
options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
manager.requestImageForAssetTargetSizeContentModeOptionsResultHandler (imageAsset.ios, {width: 2048, height: 1536}, PHImageContentModeAspectFill, options, function (result, info) {let srcfilePath = info.objectForKey ("PHImageFileURLKey"). toString (); ...});
Выше: srcfilePath (который я передаю как fileUri) - это: file: /// var / mobile/Media/DCIM/101APPLE/IMG_1902.JPG
Тогда имя изображения IMG_1902.JPG
Однако при этом загружается пустой файл.Я предполагаю, что мне нужно изменить fileUri или, возможно, я должен использовать другой метод: requestImageForAssetTargetSizeContentModeOptionsResultHandler
.
Я попробовал решение, предложенное здесь , чтобы сделать:
let fileUri = image.fileUri.replace("file://","");
, и я попытался изменить тип пантомимы "mimeType":"image/jpg"
.
Любые идеи очень ценятся.