钛工作室至Grails imge post

钛工作室至Grails imge post,grails,titanium-mobile,Grails,Titanium Mobile,我正试图将一个图像发布到我的grails应用程序中,但运气不太好 我的代码是: function upload(){ var xhr = Titanium.Network.createHTTPClient(); xhr.onerror = function(e){ Ti.API.info(picMedia + " : " +message.value); Ti.API.info('IN ERROR ' + e.error); a

我正试图将一个图像发布到我的grails应用程序中,但运气不太好

我的代码是:

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应用程序的“如果”行中出现错误。
我做错了什么?

我们的一个应用程序也有同样的问题。困难在于,在这种情况下,Tianium实际上无法处理二进制文件

我们做了以下工作:

  • 在客户端创建图像的base64编码字符串
  • 将此字符串发布到后端
  • 再次将base64解码为图像

我们分析了大量的网络流量,在大多数情况下,titanium试图发送文件,但由于javascript的缘故,它总是转换成某种ascii格式,服务器端无法使用。

如果您试图通过ajax上传文件,您需要发布错误信息,你会玩得很不开心。你确定你使用的是
多部分/表单数据
内容类型吗?