繁体   English   中英

如何使用XMLHttpRequest对象以输入流格式将图像文件发送到服务器

[英]How to send image file in inputstream format to server using XMLHttpRequest object

我在webservice中有四个参数。 我正在使用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);

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");
}

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM