0

これは近いはずですが、エラーの原因がわかりません。

私のTitaniumアプリには、canvas要素と次のコードを含むWebviewがあります。

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ヘッダーを追加するまで、以前は「認証が必要」というエラーが発生していたため、認証は機能していると思います。

4

1 に答える 1

0

それはDrupaniumによって提供されたインストールでした。DrupalとServices3を新たにインストールしたところ、ファイルが正常にアップロードされています。

于 2012-11-17T21:36:00.707 に答える