1

現在、PhoneGap で非常に厄介な問題が発生しています。イメージをリモート サーバーにアップロードするアプリを作成しました (サーバーは PHP を実行します)。

WiFi 経由で画像をアップロードすると、アプリは完全に動作しますが、2G/3G 経由で同じ画像をアップロードしても何も起こりません。エラー コールバックも成功コールバックもありません。何も起こりません。

いくつかの非常に小さな (~150kb) ファイルを含むさまざまなファイル サイズを試しましたが、役に立たないようです。Cordova バージョン 2.5、2.6、および 2.7 を試しました。アプリは phonegap ドキュメントのデフォルトの例を使用します。アプリのコードは次のとおりです。

var app = {
    // Application Constructor
    initialize: function() {
        this.bindEvents();
    },
    // Bind Event Listeners
    //
    // Bind any events that are required on startup. Common events are:
    // 'load', 'deviceready', 'offline', and 'online'.
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    // deviceready Event Handler
    //
    // The scope of 'this' is the event. In order to call the 'receivedEvent'
    // function, we must explicity call 'app.receivedEvent(...);'
    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },
    // Update DOM on a Received Event
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        var listeningElement = parentElement.querySelector('.listening');
        var receivedElement = parentElement.querySelector('.received');

        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');

        console.log('Received Event: ' + id);
    },

    doStuff: function() {
        navigator.camera.getPicture(app.uploadPhoto,
                                        function(message) { alert('get picture failed'); },
                                        { quality: 50,
                                        destinationType: navigator.camera.DestinationType.FILE_URI,
                                        sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY }
                                        );
    },

    uploadPhoto: function(imageURI) {
        var options = new FileUploadOptions();

        options.fileKey="files";
        options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
        options.mimeType="image/jpeg";

        var params = {};
        params.pathname = "VARIABLE_FOR_SERVER";
        params['file-type'] = 'image';

        options.params = params;

        try {
            var ft = new FileTransfer();
            ft.upload(imageURI, encodeURI("SERVER_URL_HERE"), app.win, app.fail, options, true);
        } catch (err) {
            console.log('catch error');
            console.log(err);
        }
    },

    win: function(r) {
        console.log("Code = " + r.responseCode);
        console.log("Response = " + r.response);
        console.log("Sent = " + r.bytesSent);
    },

    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);
    }

};

サーバー上の $_FILES 変数は空です。私はこれを修正/デバッグしようとして夢中になっているので、ここで何が起こっているのか誰か知っていますか:D

4

0 に答える 0