我已经尝试阅读了我可以在此找到的所有文档,但我仍然对这实际是什么以及如何接收它感到困惑。
我正在尝试在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,...]”但可以肯定的是,他们不得不期待另一方面,所以知道将其转换回阵列?
提前致谢。
答案 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);