Titanium Appcelerator モバイル アプリケーションから Web サーバーに写真を送信しようとしています。
次の例を使用しています。
var upload_token = "hi! I am a token!";
var content = '';
var boundary = '---------------------------170062046428149';
content += '--'+ boundary + '\r\n';
content += 'Content-Disposition: form-data; name="uploadToken"\r\n';
content += '\r\n';
content += upload_token + '\r\n';
content += '--'+ boundary + '\r\n';
content += 'Content-Disposition: form-data; name="myNickname"\r\n';
content += '\r\n';
content += myNickname+'\r\n';
content += '--'+ boundary + '\r\n';
content += 'Content-Disposition: form-data; name="nativePath"\r\n';
content += '\r\n';
content += 'file:///storage/emulated/0/Pictures/app-name/tia-217296905.jpg\r\n';
content += '--'+ boundary + '\r\n';
content += 'Content-Disposition: form-data; name="fileContent"; filename="/appicon.png"\r\n';
content += 'Content-Type: binary/octet-stream\r\n';
content += '\r\n';
var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, '/appicon.png');
var full_content = Ti.createBuffer({value: content});
var fileStream = Ti.Stream.createStream({ source : file.read(), mode : Titanium.Stream.MODE_READ});
var content_size = full_content.append(Ti.Stream.readAll(fileStream));
Ti.API.debug('Appended File Size : ' + content_size ); // ==> same as file.size
content = '\r\n';
content += '--'+ boundary + '--\r\n';
full_content.append(Ti.createBuffer({value : content}));
xhr = Ti.Network.createHTTPClient();
var send_data = full_content.toBlob();
var url = 'http://website.address/api/push_photo.php';
xhr.onload = function(e){
console.log(e);
alert("DONE!");
};
xhr.onerror = function(e){
console.log(e);
};
xhr.open('POST', url);
xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);
xhr.send({image:send_data});
すべてが期待どおりに機能し、ファイルがサーバーに送信され、携帯電話の Titanium アプリケーションが "DONE!" と表示されます。これは、xhr.onload がトリガーされたことを意味します...
私の質問は、開発者コンソールで確認できるエラーに関するものです。
appcelerator.kroll.runtime.v8.V8Object.callProperty(V8Object.java:73) [エラー]: TiHTTPClient: org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1155) で [エラー]: TiHTTPClient: Android で。 os.Handler.dispatchMessage(Handler.java:95) [エラー]: TiHTTPClient: android.os.Looper.loop(Looper.java:137) で [エラー]: TiHTTPClient: org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread で。 run(KrollRuntime.java:118) [WARN] : TiBlob: (KrollRuntimeThread) [24,13680] getFile は、非ファイル BLOB タイプではサポートされていません。[警告] : TiBlob: (KrollRuntimeThread) [8,13688] getNativePath は、ファイル以外の BLOB タイプではサポートされていません。[情報] :TiHTTPClient: at android.os.Handler.dispatchMessage(Handler.java:95) [エラー]: TiHTTPClient: at android.os.Looper.loop(Looper.java:137) [エラー]: TiHTTPClient: at org.appcelerator.kroll .KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:118) [WARN] : TiBlob: (KrollRuntimeThread) [24,13680] getFile は、非ファイル BLOB タイプではサポートされていません。[警告] : TiBlob: (KrollRuntimeThread) [8,13688] getNativePath は、ファイル以外の BLOB タイプではサポートされていません。[情報] :TiHTTPClient: at android.os.Handler.dispatchMessage(Handler.java:95) [エラー]: TiHTTPClient: at android.os.Looper.loop(Looper.java:137) [エラー]: TiHTTPClient: at org.appcelerator.kroll .KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:118) [WARN] : TiBlob: (KrollRuntimeThread) [24,13680] getFile は、非ファイル BLOB タイプではサポートされていません。[警告] : TiBlob: (KrollRuntimeThread) [8,13688] getNativePath は、ファイル以外の BLOB タイプではサポートされていません。[情報] :(KrollRuntimeThread) [8,13688] getNativePath はファイル以外の BLOB タイプではサポートされていません。[情報] :(KrollRuntimeThread) [8,13688] getNativePath はファイル以外の BLOB タイプではサポートされていません。[情報] :
{"code":0,"source":{"responseText":"Array\n(\n [uploadToken] => こんにちは!私はトークンです!\n [myNickname] => raholl\n [nativePath] => file:///storage/emulated/0/Pictures/app-name/tia-217296905.jpg\n)\n","location":"http://********/api/push_photo .php","status":200,"domain":null,"readyState":4,"tlsVersion":0,"connectionType":"POST","validatesSecureCertificate":false,"statusText":"OK", "username":null,"password":null,"allResponseHeaders":"null:HTTP/1.1 200 OK\nConnection:Keep-Alive\nContent-Length:166\nContent-Type:text/html\nDate:Wed, 18 2016 年 5 月 02:10:12 GMT\nキープアライブ: タイムアウト = 5、最大 = 100\nサーバー: Apache/2.2.22 (Debian)\nVary:Accept-Encoding\nX-Android-Received-Millis:1463537845271\nX-Android-Sent-Millis:1463537844807\nX-Powered-By:PHP/5.5.33-1~dotdeb+7.1\n","responseXML":null ,"responseData":{"file":null,"nativePath":null,"height":0,"length":166,"width":0,"mimeType":"text/html","apiName": "Ti.Blob","text":"Array\n(\n [uploadToken] => こんにちは!私はトークンです!\n [myNickname] => raholl\nTi.Blob","text":"Array\n(\n [uploadToken] => こんにちは!私はトークンです!\n [myNickname] => raholl\nTi.Blob","text":"Array\n(\n [uploadToken] => こんにちは!私はトークンです!\n [myNickname] => raholl\n
[nativePath] => file:///storage/emulated/0/Pictures/app-name/tia-217296905.jpg\n)\n","type":2,"bubbleParent":true},"autoRedirect" :true,"apiName":"Ti.Network.HTTPClient","autoEncodeUrl":true,"connected":false,"bubbleParent":true,"_events":{"disposehandle":{}}},"success" :true} [INFO] : ALERT: (KrollRuntimeThread) [8,13696] 完了
この "Error parsing XML [ERROR]" はどの行から来ていますか? 修正方法は?
すべて正常に動作しているように見えますが、エラーは非常に深刻なようです...
どんなアイデアでも大歓迎です。