【发布时间】:2025-12-05 23:50:02
【问题描述】:
我正在尝试了解如何使用 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');
}
有什么办法可以做到吗?
提前谢谢你。
-- 编辑--
发生的另一个问题是,当我的后端服务器接收到文件时,它似乎已损坏,无法作为图像读取。
【问题讨论】:
-
如果您想通过 Worklight Server,您唯一的方法是 Worklight Adapters。
-
如果您担心由于编码导致负载大小增加,您可以使用
invokeProcedure中的compressResponse选项请求压缩响应 -
感谢 cmets。 @IdanAdar,这就是我想知道的,如果我可以使用适配器发送图像而不进行编码。 @Srik,但压缩只会应用于响应(JSON),而不是我想通过 HTTP POST 发送的图像。
-
对不起,我误解了你的问题。目前,我想不出一种在没有 base64 编码的情况下将二进制数据发送到 Worklight Server 的方法,因为 JavaScript 不提供处理二进制流的直接方法。
-
@felipeh 有什么更新吗?任何解决方案?在阅读gonzalo123.com/2013/10/28/… 时,我还可以看到 base64 图像也会导致设备上的内存问题。 Cordova 文件传输能否成为解决方案的一部分?
标签: ibm-mobilefirst worklight-adapters worklight-server