什么是ByteArrayEntity和JavaScript中的等价物

时间:2013-07-03 23:24:28

标签: java javascript xmlhttprequest http-post

我已经尝试阅读了我可以在此找到的所有文档,但我仍然对这实际是什么以及如何接收它感到困惑。

我正在尝试在javascript中重新创建连接api(最初用java编写)。 Java正在将图像作为byteArrayEntity发送:

HttpPost postRequest = new HttpPost(requestUrl);
log("Request url: " + requestUrl);

HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 30000);
postRequest.setParams(params);

HttpEntity entity = new ByteArrayEntity(photo);
postRequest.setEntity(entity);

Header header = new BasicHeader("Content-Type", "image/jpeg");
postRequest.addHeader(header);
header = new BasicHeader("Accept", "application/json");
postRequest.addHeader(header);

如何在javascript中执行相同的操作,以便在不对其执行任何进一步操作的情况下识别它?

显然我不能在javascript中做同样的事情,我可以将它作为字节数组的字符串发送,即。 “[42,34,24,...]”但可以肯定的是,他们不得不期待另一方面,所以知道将其转换回阵列?

提前致谢。

2 个答案:

答案 0 :(得分:0)

字节数组可能是base 64编码的。您可以在服务器上为此添加前缀,浏览器会将其视为图像数据。

data:image/jpeg;base64,BBBBBB...

其中BBBBBB ...是你的字节数组

答案 1 :(得分:0)

已解决:谢谢,最终发现将其识别为图像的唯一方法是将其作为Uint8Array发送到arraybuffer中。目前接收软件与之前的图像不匹配,所以我不确定他们是否期望以其他方式,但httprequest被识别为有效图像。

var abufimg = new ArrayBuffer(array.length);
var vu8img = new Uint8Array(abufimg);
for(var y=0; y<array.length; y++){
    vu8img[y] = array[y];
}               

xhr.send(abufimg);