2014-03-26 92 views
0

所以我想要做的是複製使用fileTransfer在PhoneGap中將圖像上傳到我的服務器(POST方法)的過程。使用Phonegap上傳文件:文件傳輸錯誤:請求正文流耗盡

出於測試目的,我使用Chrome的郵差REST客戶端,這是工作的配置:

enter image description here

這裏是PhoneGap的JS代碼:

//爲imageData是網址圖像(文件:///無功/移動/ ...)

var options = new FileUploadOptions(); 
options.fileKey = "media"; 
options.fileName=imageData.substr(imageData.lastIndexOf('/')+1); 
options.mimeType="image/jpeg"; 

var params = new Object(); 
params.category = "/api/v1/category/testcat/"; 
params.message = "Hello from iOS"; 
options.params = params; 

var ft = new FileTransfer(); 
ft.upload(imageData, encodeURI("http://mydomain.com/api/v1/post/"), win, fail, options); 

// win, fail 

和響應:

2014-03-25 23:30:46.582 StarterApp[6103:6107] FileTransferError { 
    body = ""; 
    code = 3; 
    "http_status" = 0; 
    source = "file:///var/mobile/Applications/3FEF7630-C089-4DF3-9618-EF9EEE0AD6FE/tmp/cdv_photo_002.jpg"; 
    target = "http://mydomain.com/api/v1/post/"; 
} 
2014-03-25 23:30:46.584 StarterApp[6103:6107] File Transfer Error: request body stream exhausted 

任何幫助將是非常非常感謝,因爲我完全被卡住:(

回答

2

請按照下述代碼:

var options = new FileUploadOptions(); 
options.headers = { 
Connection: "close" 
} 
var options = new FileUploadOptions(); 
options.chunkedMode = false; 
options.fileKey="image"; 
options.fileName=global_URI.substr(global_URI.lastIndexOf('/')+1)+'.jpg'; 
options.mimeType="image/jpeg"; 
var params = new Object(); 
options.params = params; 
params.user_id =userID; 
params.group_id=groupId; 
var url=encodeURI(ipAddress +"/add_content.php"); 
var ft = new FileTransfer(); 
ft.upload(global_URI,url,win, fail, options); 

也讓我知道你是否正在爲Android或iOS ?因爲您可能會在Android代碼中遇到一些問題。

+0

嗨巴魯納。我嘗試了你的方法。它適用於我從android。我看到一些標題附加到文件內容,如mimetype,內容類型和內容處置。我使用multipartparser.cs類來僅提取文件內容。它也適用於我。但對於像10中的少數圖像。我看到image/jpeg附加到文件內容。因此我無法打開文件。我不知道這是如何隨機添加少量圖像。我看到這些圖像多了14個字節。 (14bytes = image/jpeg + 2換行符)關於這個問題的任何想法? –

+0

你可以在這裏分享你的代碼行嗎? –