私はカメラとライブラリから写真をアップロードする非常にシンプルなアプリを持っています。私は意図どおりに動作させることができたし、何らかの理由で私には知られていなかったため、動作を停止した。私はコミットからファイルをダウンロードしました。私はそれが動作していたと確信しており、もはやそれはありません。phonegapコードでサーバにファイルをアップロードする際の問題
アプリのみましょうあなたが写真を撮って、ギャラリーからいずれかを選択し、それがその後、写真撮影した/選択の小さなサムネイル(これが機能している)を追加し、フォームを送信してみましょう。アップロードは、ファイルを選択するとすぐに行われ、フォームの送信は、添付ファイルとしてこれらのファイルを含む電子メールを送信します(サーバー上で実行されます)。
編集:私はPhoneGapのウィンドウサーバに自分のデバイスを接続することにより、アプリケーションをテストしています:
アップロード機能は、常に「コード= 1を、エラーが発生しました」を返します。
EDIT2:どうやら問題はPhoneGapのエミュレータだったが、実際のAPKインストールで試してみました、それが働きました。
CODE:
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
// Now safe to use device APIs
//alert("Device Ready");
/*button that opens camera and takes picture*/
$("#add_photo").click(function(){
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
sourceType: Camera.PictureSourceType.CAMERA,
destinationType: Camera.DestinationType.FILE_URI });
});
/*on success show thumbnail and try to upload*/
function onSuccess(imageURI) {
$("#preview").append("<img src='"+imageURI+"'/>");
fileUpload(imageURI, "image/jpeg");
}
function onFail(message) {
alert('Failed because: ' + message);
}
function fileUpload(imageURI, mimeType){
var win = function (r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
$('#form_submit').prop('disabled', false);
$('#form_submit').prop('value', 'ENVIAR');
//alert("done");
//alert(r.response);
}
var fail = function (error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1);
options.mimeType = mimeType;
var params = {};
i++;
sent_files[i] = session_id+"-"+i+"."+imageURI.split('.').pop();
params.session_id = sent_files[i];
$('[name=send]').val(sent_files.join());
options.params = params;
$('#form_submit').prop('disabled', true);
$('#form_submit').prop('value', 'CARGANDO');
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("http://myServer/folder"), win, fail, options);
};
}
実デバイスインスタレーション代わりのPhoneGapのエミュレータを使用して、それを試し、意図したとおりにそれが働きました。 –