2

カメラを使用して画像をキャプチャし、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
    });

serverURLcordova.xml でホワイトリストに登録されている AJAX エンドポイントのドメインとして定義されています。

これに関して SO でいくつかの質問を見てきましたが、chunkedMode を使用する必要があるかどうかについてさまざまな意見があります。この問題を抱えている人もいますか?

ICSを実行しているSamsung Galaxy Sでこれを試しています。

この問題を解決してくれる人が、不思議なことにビール工場を継いでくれますように。

4

2 に答える 2

5

FileTransfer アップロード メソッドでカメラ成功コールバックから取得した imageUri を使用することはできません。まず、次のように uri をファイル名として解決する必要があります。

navigator.camera.getPicture(function(imageURI){

      window.resolveLocalFileSystemURI(imageUri, function(fileEntry) {
            fileEntry.file(function(fileObj) {

                var fileName = fileObj.fullPath;

                //now use the fileName in your method
                //ft.upload(fileName ,serverURL + '/ajax.php?fname=appuploadspotimage'...);

            });
        });
});
于 2013-01-08T17:22:50.027 に答える
0

少し困惑した後、画像uriを直接使用できるように思えます....

ここで私の答えを見てください:(これはアンドロイドで私のために働きます):

android phonegap カメラと画像のアップロード

于 2013-07-25T09:27:08.150 に答える