如何从cordova做多部分请求

时间:2015-01-26 10:47:44

标签: javascript cordova

我必须提交带有图片的表单+一些其他表单字段(多个表单提交请求)。 我试过这个

function upload() {
    var img = document.getElementById('image');
    var imageURI = img.value;
    var options = new FileUploadOptions();
    options.fileKey = "photo";
    options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1);
    var params = new Object();
    options.params = params;
    var ft = new FileTransfer();
    ft.upload(imageURI, "https://www.example.com/upload.php", win, fail,
        options);
}

function win(r) {
    console.log("Code = " + r.responseCode);
    console.log("Response = " + r.response);
    console.log("Sent = " + r.bytesSent);
}

function fail(error) {
    alert("An error has occurred: Code = " + error.code);
    console.log("upload error source " + error.source);
    console.log("upload error target " + error.target);
}

html是

<input type="file" id="userImage" name="photo">

但它返回错误代码1 和图像路径是fakepat \ 1089001 它也没有得到图片名称而是显示一个数字? 那么如何从输入文本框中获取图像路径?

如果我在src中对图像进行硬编码(仅用于测试),则请求

错误代码1 未定义的varailbe图像

请记住,我必须在base64网址中提交图片

1 个答案:

答案 0 :(得分:1)

其他表单数据将在您的params对象中发送。你现在是空白的,但你可以做到

options.params.formkey1 = value1;
options.params.formkey2 = value2;

关于你的第二个问题(我试着一次只限一个问题),你需要在设备上传递文件的路径。请参阅文件传输的文档。

最后,您不需要使用base64来上传数据。我避免这样做,因为它比二进制数据更大。让FileTransfer推送二进制数据。它是为了这样做而建立的。