2013-04-23 49 views
0

我在webservice中有四個參數。該服務工作古德我已經測試使用Android應用程序。但同樣的事情,我不能在phonegap。如何使用XMLHttpRequest對象將輸入流格式的圖像文件發送到服務器

參數: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); 

回答

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

希望這有助於。

相關問題