Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nativescript ImageSource HTTP Post_Http_Nativescript - Fatal编程技术网

Nativescript ImageSource HTTP Post

Nativescript ImageSource HTTP Post,http,nativescript,Http,Nativescript,我正在尝试上载从Nativescript Camera Plus插件(图像源类型)拍摄的图像,并使用Nativescript HTTP表单数据插件将其上载到API服务器。我已经用Postman测试了我的后端(Django),它可以正常工作。我不知道如何从ImageSource获取包含该图像的实际PNG/JPG文件,以便单独上载该图像(而不是ImageSource数据) 我尝试过使用ImageSource对象本身,但它发送了一个空文件。然后我尝试跟随HTTPFormData插件的演示,并使用UII

我正在尝试上载从Nativescript Camera Plus插件(图像源类型)拍摄的图像,并使用Nativescript HTTP表单数据插件将其上载到API服务器。我已经用Postman测试了我的后端(Django),它可以正常工作。我不知道如何从ImageSource获取包含该图像的实际PNG/JPG文件,以便单独上载该图像(而不是ImageSource数据)

我尝试过使用ImageSource对象本身,但它发送了一个空文件。然后我尝试跟随HTTPFormData插件的演示,并使用UIImageRepresentation和位图(ios/Android),但它仍然提交了一个空文件

let fd = new TNSHttpFormData();

    let params = [];

    let imageData: any;
        if(this.scannedID.image_data) {
            if(this.scannedID.image_data.ios) {
                console.log("iOS" + this.scannedID.image_data.width + " " + this.scannedID.image_data.height);
                imageData = this.scannedID.image_data.ios.UIImagePNGRepresentation;
            } else {
                let bitmapImage = this.scannedID.image_data.android.graphics.Bitmap;
                let stream = this.scannedID.image_data.android.java.io.ByteArrayOutputStream();
                bitmapImage.compress("PNG", 100, stream);
                let byteArray = stream.toByteArray();
                bitmapImage.recycle();

                imageData = byteArray;
            }
        }
        let param: TNSHttpFormDataParam = {
            data: imageData,
            contentType: 'image/png',
            fileName: 'idtest1.png',
            parameterName: 'image'
        };
        params.push(param);


    console.log("Parameters: " + JSON.stringify(param));
    console.log(params[0].data);
    try {
        const response: TNSHttpFormDataResponse = await fd.post(this.apiURL + 'VerificationID/', params, { headers: this.createRequestHeader(false) } );
        console.log(response);
        return response;
    } catch (e) {
        console.log(e);
        return e;
    }

它正在打印宽度/高度,所以我知道图像在那里。我相信我的.ios.UIImagePNGRepresentation没有返回我想要的PNG。如果我输出用文件创建的参数,它将输出除“数据”(应该是实际的文件数据)之外的所有对象数据。我不知道从这里到哪里去。任何帮助都将不胜感激

我不确定你是如何得到这个.scannedID.image\u数据的

但是如果您使用的是camera plus插件,它将返回一个应用了适当宽度和高度的,使用image asset上的方法应该返回UIImage(iOS)/位图(Android)

在你的拍照活动中可能是这样的

function onPhotoCaptured(args) {
  const asset = args.data;
  asset.getImageAsync((image, error) => {
        let imageData: any;
        if(image) {
            if(asset.ios) {
                imageData = UIImagePNGRepresentation(image);
            } else {
                let bitmapImage: android.graphics.Bitmap = image;
                let stream = new java.io.ByteArrayOutputStream();
                bitmapImage.compress(android.graphics.Bitmap.CompressFormat.PNG, 100, stream);
                let byteArray = stream.toByteArray();
                bitmapImage.recycle();

                imageData = byteArray;
            }
        }
  });
}

谢谢你的帮助。您知道UIImagePNGRepresentation方法以及java.io和android.graphics可以从哪里导入吗?无法识别它们。没有要导入的内容,它们是运行时可用的本机对象。用于TypeScript intellisense。