Я пытаюсь загрузить файл с phonegap в потоковую работу (https://streamwork.com/api/Post_an_item_File_item.html).
Я пробовал FileTransfer api Phonegap, который, похоже, не отправляет запрос, как потоковая работа хочет: </p>
<pre><code>var url =getItemsURL();
var item = "<?xml version='1.0' encoding='UTF-8'?>" +
"<item name='Test "+timestamp()+"'>" +
"<description>my upload</description>" +
"<file_item/>" +
"</item>";
var win = function(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
var fail = function(error) {
alert("An error has occurred: Code = "+ error.code);
}
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName="hello.txt";
options.mimeType="text/plain";
var params = new Object();
params.item = item;
options.params = params;
var paths = navigator.fileMgr.getRootPaths();
var ft = new FileTransfer();
ft.upload(paths[0] + "hello.txt",url, win, fail, options);
(на самом деле я вижу, что внутренний пробел вызывает "java.io.FileNotFoundException: https://streamwork.com/v1/activities/..."
Но URL-адрес должен быть правильным, так как я затем использовал его в ручном режимезаписано xhr.
</p>
<p>function doUpload(data,fname,type,enc){</p>
<pre><code>var url = getItemsURL();
var item = "<?xml version='1.0' encoding='UTF-8'?>" +
"<item name='My new activity item "+timestamp()+"'>" +
"<description>my upload</description>" +
"<file_item/>" +
"</item>";
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function(){
alert("xmlHttpObject.readyState = " + xhr.readyState + (xhr.readyState >= 3 ? " HTTP-Status = " + xhr.status : ''));
};
xhr.open("POST",url, true);
var boundary ="mime_boundary"
xhr.setRequestHeader("Accept", 'application/xml');
xhr.setRequestHeader("Content-Type", 'multipart/form-data; boundary=' + boundary);
var body = '--' + boundary + '\r\n';
body+='Content-Disposition: form-data; name="item"; filename="dummy.xml"\r\n';
body+= 'Content-Type: application/xml\r\n\r\n';
body+=item+'\r\n';
body+='--'+boundary+'\r\n\r\n';
body+='Content-Disposition: form-data; name="file"; filename="'+fname+'"\r\n';
body+='Content-Type: '+type+'\r\n';
body+='Content-Transfer-Encoding: '+enc+'\r\n\r\n';
body+=data+'--' + boundary + '--\r\n';
xhr.setRequestHeader('Content-length', body.length);
xhr.send(body);
}
, которое я вызываю с помощью doUpload ("lorem ipsum foo bar", "test.txt", "text /plain "," binary ");
это работает в firefox, когда я даю ему право на кросс-доменное вещание, но когда я выполняю его на своем андроиде (htc desire hd), оно не работает.
Выходные данные изменения состояния готовности Firefox xhr: 1, 1, 2, 4 (0) Выходные изменения изменения состояния xhr Android: 1, 4 (0)
Есть ли у кого-нибудь идеи почего мне не хватает?
заранее спасибо max