将图像从 Titanium 上传到 Drupal 7 / Services 3



这必须很接近,但我无法弄清楚导致错误的原因。

在我的 Titanium 应用程序中,我有一个带有画布元素和以下代码的 Web 视图:

function getImageData() {
    return canvas.toDataURL('image/png');
}

我正在像这样将数据移动到Titanium应用程序:

var imageBase64data = webview.evalJS('getImageData()')

数据看起来不错,从"data:image/png;base64,"开始。

然后在 Titanium 中,我有一个登录的 drupal 会话并调用此函数:

function uploadImage(imageBase64data, callback) {
    var url = REST_PATH + "file.json";
    var file = { 
        filename: utils.createRandomString() + ".png",
        file: imageBase64data
//      uid: Titanium.App.Properties.getString("userUid"),
//      filesize: ""+Titanium.Utils.base64decode(imageBase64data).length,
    };

    var xhr = Titanium.Network.createHTTPClient({timeout: 30000});
    xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    var authString = Titanium.App.Properties.getString("userSessionName")+'='+Titanium.App.Properties.getString("userSessionId");
    xhr.setRequestHeader("Cookie", authString);
    xhr.onload = function() {
        if(xhr.status == 200) {
            var response = xhr.responseText;
            callback(response);
        }
    };
    xhr.onerror = function(e) {
      alert("There was an error: " + e.error);
      Ti.API.info(JSON.stringify(this));
    };    
    xhr.open("POST", url);
    xhr.send(file);
}

xhr.onerror 被调用时 e.error = "undefined"

跟踪如下所示:

{
  "responseData":{},
  "readyState":4,
  "connected":true,"UNSENT":0,"DONE":4,"HEADERS_RECEIVED":2,"OPENED":1,"LOADING":3,
  "responseText":null,"status":406
}

我认为身份验证正在工作,因为我之前收到"需要身份验证"错误,直到我添加 Cookie 标头。

这是Drupanium提供的安装。我刚刚做了一个新的Drupal和新的服务3安装,我的文件上传得很好。

相关内容

  • 没有找到相关文章

最新更新