カメラを使用して画像をキャプチャし、AJAX エンドポイントにアップロードしようとしています。このエンドポイントがファイルを受け入れることができることを確認しました (デスクトップに、画像を含むフォームを送信するテスト HTML ファイルを作成しました)。Cordova (phonegap) 1.7.0 を使用しており、fileTransfer() を機能させようとしています。以下は、私が従ったドキュメントへのリンクです。
http://docs.phonegap.com/en/1.0.0/phonegap_file_file.md.html#FileTransfer
成功のコールバックがトリガーされますが、エンドポイントで $_FILES データが見つかりません。
するとこんな記事を見つけました。
http://zacvineyard.com/blog/2011/03/25/upload-a-file-to-a-remote-server-with-phonegap/
を使用することを提案しoptions.chunkedMode = false
ました。現在、アップロードには 1 年半かかり、最終的にはエラー コード 3 で失敗しますFileError.ABORT_ERR
。
何か不足していますか?
以下のアプリからの私のコード:
navigator.camera.getPicture(function(imageURI){
console.log('take success! uploading...');
console.log(imageURI);
var options = new FileUploadOptions();
options.fileKey = 'file';
options.fileName = 'spot_image.jpeg';
options.mimeType = 'image/jpeg';
var params = new Object();
params.spot_id = 1788;
params.param2 = 'something else';
options.params = params;
options.chunkedMode = false;
var ft = new FileTransfer();
ft.upload(imageURI,serverURL + '/ajax.php?fname=appuploadspotimage',function(r){
console.log('upload success!');
console.log(r.responseCode);
console.log(r.response);
console.log(r.bytesSent);
},function(error){
console.log('upload error')
console.log(error.code);
},options,true);
console.log('after upload');
},function(message){
console.log('fail!');
console.log(message);
},{
quality: 50,
destinationType: navigator.camera.DestinationType.DATA_URL,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
});
serverURL
cordova.xml でホワイトリストに登録されている AJAX エンドポイントのドメインとして定義されています。
これに関して SO でいくつかの質問を見てきましたが、chunkedMode を使用する必要があるかどうかについてさまざまな意見があります。この問題を抱えている人もいますか?
ICSを実行しているSamsung Galaxy Sでこれを試しています。
この問題を解決してくれる人が、不思議なことにビール工場を継いでくれますように。