Nativescript ImageSource HTTP发布

时间:2019-06-12 01:10:34

标签: http nativescript

我正在尝试上传从Nativescript Camera Plus插件(ImageSource类型)拍摄的图像,并使用Nativescript HTTP Form Data插件将其上传到我的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。如果输出使用文件创建的参数,则它将输出除“数据”(应为实际文件数据)以外的所有对象数据。我不确定从这里去哪里。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我不确定您如何到达let yourUL = document.getElementById('myUL'); let yourLiNodeList = yourUL.getElementsByTagName('li'); console.log(yourLiNodeList);

但是,如果您使用的是相机加插件,它将返回一个image-asset,并应用了适当的宽度和高度,在图像资产上使用getImageAsync(callback)方法应该会返回UIImage(iOS)/位图(Android)。

在您的照片捕获事件中可能是这样的,

this.scannedID.image_data