2

phonegap のfiletransfer.upload.

これがファイルを送信するための私のコードです

sendImageFile = function (imageURI, imageName) {
    writelog("Sending image file", 1);
    var options = new FileUploadOptions();
            options.fileKey="file";
            options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
            options.mimeType="image/jpeg";
            var params = new Object();
            params.value1 = "image name";
            options.params = params;
            options.chunkedMode = false;
            var ft = new FileTransfer();
            writelog("image uri length " + imageURI.length, 1);
    writelog("Image options set up successfully", 1);
    var ft = new FileTransfer();
    ft.upload(imageURI, uploadurl, win, transFail, options);
}

ここにlogcatの関連行がいくつかあります

01-07 12:27:30.743: D/FileTransfer(20066): Uploaded 114688 of 145432    bytes 

01-07 12:27:31.571: D/FileTransfer(20066): got response from    server 

01-07 12:27:31.696: D/CordovaLog(20066): Code = 200 

01-07 12:27:31.696: D/CordovaLog(20066): Response = 12099

01-07 12:27:31.696: D/CordovaLog(20066): Sent = 145236

どんな助けでも大歓迎です。

ありがとう

マット

4

2 に答える 2

2

解決策が見つかりました。私のサーバーは、フォーム送信から分割するのではなく、ファイルとして送信されたすべてのデータを受け入れていました(私は信じています)。これにより、メインの画像データの直前に数行のテキストが表示されていました。

これを回避するために、古いfileTransferプラグイン(https://github.com/phonegap/phonegap-plugins/tree/master/Android/FileUploader)をインストールし、phonegapのバージョン1.8.1に戻しました(更新方法がわからないため)現時点では古いプラグイン)。

fileUpload.java ファイルを編集して、送信するファイルの前にあるすべてのテキストを削除しました。サーバーから読み取れるようになりました

于 2013-01-15T17:00:49.797 に答える
1

FileTransfer アップロード メソッドで Android のカメラ成功コールバックから取得した 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 upload method
            var options = new FileUploadOptions();
            options.fileKey = "file";
            options.fileName = fileName.substr(fileName.lastIndexOf('/')+1);
            //...
        });
    });

}, errorFn, cameraParams);
于 2013-01-08T17:26:58.453 に答える