1

デバイスからサーバーに画像をアップロードするために、このPhoneGap の例を実行しようとしています。

    // Wait for PhoneGap to load
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // PhoneGap is ready
    //
    function onDeviceReady() {

        // Retrieve image file location from specified source
        navigator.camera.getPicture(uploadPhoto,
                                    function(message) { alert('get picture failed'); },
                                    { quality: 50, 
                                    destinationType: navigator.camera.DestinationType.FILE_URI,
                                    sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY }
                                    );

    }

    function uploadPhoto(imageURI) {
        var options = new FileUploadOptions();
        options.fileKey="file";
        options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
        options.mimeType="image/jpeg";

        var params = new Object();
        params.value1 = "test";
        params.value2 = "param";

        options.params = params;

        var ft = new FileTransfer();
        ft.upload(imageURI, "http://some.server.com/upload.php", win, fail, options);
    }

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

    function fail(error) {
        alert("An error has occurred: Code = " + error.code);
        alert("upload error source " + error.source);
        alert("upload error target " + error.target);
    }

私の場合、上記の例とは異なり、データをデータベースに投稿する php ファイルを使用していませんが、安全な URL を使用して HTML 経由で直接投稿しています。そのようなデスクトップバージョンで見えるもの:

<form action="https://mySecureUrl.com/?filename=myImage" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"><br>
<input type="submit" value="Upload File to Server">
</form>

今、PhoneGap FileTransfer() を使用して同じ方法を適用しようとしていますが、エラー コード 3 が表示されます。

var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("https://mySecureUrl.com/?filename=myImage.jpg"), win, fail, options);
  • この方法のようなファイルをPhoneGapに投稿することはできますか? どのように?
  • そうでない場合、そのためのphpソリューションは何ですか?
4

1 に答える 1

0

options の下の fileKey は、サーバーが検索する名前です。HTML では名前が「myfile」に設定され、javascript では「file」が設定されています。

<input type="file" name="myfile">

options.fileKey="file";

options.fileKey と属性名は同じものなので、PHP が $_FILES 配列で "file" を探していることを確認してください。

于 2013-07-31T13:04:26.803 に答える