如何通过没有base64编码的Worklight服务器发送图像?

时间:2013-11-05 13:01:56

标签: ibm-mobilefirst worklight-adapters worklight-server

我试图了解如何使用Worklight适配器将图像发送到我的后端服务器。 我知道我可以使用Base64编码通过Worklight适配器发送它们,但这意味着服务器之间的流量增加了大约30%,并且会产生一些不需要的处理开销。

现在我正在使用Phonegap FileTransfer库,如下所示,但是这会在客户端和后端服务器之间创建一个直接连接,而不是通过Worklight服务器。

var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";

var headers = {"Content-Type": "image/jpeg"};
options.headers = headers;

var ft = new FileTransfer();
ft.upload(imageURI, encodeURI(host + "/images"), imageUploadSuccess, imageUploadFail, options);

function imageUploadSuccess(r) {
    WL.Logger.debug("Submit success! HTTP Status Code = " + r.responseCode);
    WL.Logger.debug("Response = " + r.response);
    WL.Logger.debug("Bytes sent = " + r.bytesSent);
    $.mobile.changePage('#SuccessPage');
}
function imageUploadFail(error) {
    WL.Logger.debug("submit error! source = " + error.source);
    WL.Logger.debug("target = " + error.target);
    $.mobile.changePage('#FailPage');
}

我有办法做到这一点吗?

提前谢谢。

- 编辑 -

发生的另一个问题是,当我的后端服务器收到文件时,它似乎已损坏,无法作为图像重新加载。

1 个答案:

答案 0 :(得分:1)

目前,Worklight适配器不支持以二进制形式发送数据。

这意味着目前您唯一的选择是您不喜欢的选项,即base64编码图像文件并将结果字符串存储在数据库中,当您需要使用它时,对它进行base64解码。