0

grails アプリケーションに画像を POST しようとしていますが、うまくいきません。

私のチタンコードは次のとおりです。

function upload(){  
    var xhr = Titanium.Network.createHTTPClient();
    xhr.onerror = function(e){
        Ti.API.info(picMedia + " : " +message.value);
        Ti.API.info('IN ERROR ' + e.error);
        alert('Sorry, we could not upload your photo! Please try again.');
    };
    xhr.onload = function(){
        Ti.API.info('IN ONLOAD ' + this.status + ' readyState ' + this.readyState);
    };
    xhr.onsendstream = function(e){
        Ti.API.info('ONSENDSTREAM - PROGRESS: ' + e.progress);
    };
    // open the client
    xhr.open('POST', 'http://localhost:8080/FYP/Profile/appUploader'); 
    // send the data
    xhr.send({
        media: picMedia,
        message: message.value,
    });

}

私のgrailsコードは次のとおりです。

   def appUploader(){

            println "MEDAI PARAMS: " + params.media
          def f = request.getFile('media') ;
             println "HERE: " + f
           if (request.getFile(params.media).getOriginalFilename()) {
               println     "FROM APP: "      +    request.getFile('myFile').getOriginalFilename()


               return
           }
    }

モバイルアプリからエラーが発生し、Web アプリの「if」行でエラーが発生します。私は何を間違っていますか?

4

1 に答える 1

0

アプリの 1 つで同じ問題が発生しました。難点は、その場合、titanium は実際にはバイナリ ファイルを処理できないことです。

次のことを行いました。

  • クライアント側で base64 でエンコードされた画像の文字列を作成する
  • この文字列をバックエンドに投稿します
  • base64 を再びイメージにデコードする

多くのネットワーク トラフィックを分析し、ほとんどの場合、titanium はファイルを送信しようとしますが、javascript が原因で常に何らかの ASCII に変換され、サーバー側では使用できません。

于 2013-02-20T08:58:20.377 に答える