0

我正在尝试将图像发布到我的 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
           }
    }

我从移动应用程序中收到错误,并且在网络应用程序的“if”行上出现错误。我究竟做错了什么?

4

1 回答 1

0

我们在我们的一个应用程序中遇到了同样的问题。困难在于钛在这种情况下并不能真正处理二进制文件。

我们做了以下事情:

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

我们分析了很多网络流量,在大多数情况下,钛试图发送文件,但由于 javascript,它总是转换成某种 ascii,这在服务器端是不可用的。

于 2013-02-20T08:58:20.377 回答