0

我在 web 服务中有四个参数。该服务正在运行,我已经使用 android 应用程序进行了测试。但是我不能在phonegap中做同样的事情。

参数:name、emailid、pass 和 imagefile。图片格式为base64png。在服务器端,我作为 Inputstream 接收。寻求帮助以二进制格式发送。

                    body+= ServiceHttpHeader('name',name1);
                    body+= ServiceHttpHeader('emailid',emailid1);
                    body+= ServiceHttpHeader('pass',pass1);
                    body +='Content-Disposition: form-data; name=imagedetails;'
                    body += 'filename='+imagedetails+'\r\n';
                    body += "Content-Type: application/octet-stream\r\n\r\n "; 
                    body +=imgdetailurl+'\r\n';

                    body += '--' + boundary + '--';
                    ImageUploadRequest.setRequestHeader('Cache-Control', 'no-cache');
                    ImageUploadRequest.send(body);
4

1 回答 1

1

Phonegap 有自己的 API 将图像上传到服务器。

一种解决方案是先将图像上传到服务器。成功上传后,您将所有其他参数以及服务器上文件的路径传递给另一个脚本,以执行您想要在那里完成的任何处理。

Phonegap 的文档说不应该使用 base64 编码的图像进行上传,因为这通常会导致最新的高分辨率相机图像出错。请改用 FILE_URI。你可以在这里阅读更多。

http://docs.phonegap.com/en/1.2.0/phonegap_file_file.md.html#FileTransfer http://docs.phonegap.com/en/2.6.0/cordova_camera_camera.md.html#Camera (用于camera.getPicture())

例子

function uploadPhotoToServer(imageURI)
{
    var options = new FileUploadOptions();
    options.fileKey="img_file";
    options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
    options.mimeType="image/jpeg";

    window.localStorage.setItem("upload_file_name",options.fileName);

    var params = new Object();
    params.value1 = "test";
    params.value2 = "param";

    options.params = params;
    options.chunkedMode = false;

    var ft = new FileTransfer();
    ft.upload(imageURI, encodeURI("<your image upload script url>"), onUploadSuccess, onFail, options);

}


function onUploadSuccess(r) 
{
    var filename = window.localStorage.getItem("upload_file_name");
    file_path_on_server = "path/to/images/folder"+filename;

       // other parameters
    var email = <the email Id> ;
    var name = <the name>;

    var parameters = "name="+name+"&email="+email+"&img_path="+file_path_on_server;

    $.ajax({
        url: <your current script url>,
        data: parameters ,
        dataType: "jsonp",
        timeout:10000,
        success:function(json) {
            alert(JSON.stringify(json, undefined,2));
        },
        error:function() {
            alert("Error");
        },
        type:"GET"
    });

function onFail()
{
       alert("Error");
}

希望这可以帮助。

于 2013-04-24T13:09:00.203 回答