我有一个图像的 base64 编码字符串。它从另一个站点传给我,其中iframe
的数据来自postMessage
. 我知道这听起来很可怕,但由于我无法控制的原因,这是一个我无法解决的集成。
我正在尝试在 PHP 测试文件中进行概念验证。
我有这样的代码:
<div id="binary"><?=$file;?></div>
<script type="text/javascript">
var oReq = new XMLHttpRequest();
oReq.open("POST", "/endpoint.php", true);
oReq.setRequestHeader("Content-Type","application/octet-stream");
oReq.setRequestHeader("X-File-Name","abc.jpg");
oReq.setRequestHeader("X-Requested-With", "XMLHttpRequest" );
// This fails whether or not 'binary' is base64-encoded and decoded here
// or when `binary` is already actually binary
oReq.send(document.getElementById( 'binary' ).innerHTML );
</script>
$file
是文件的实际内容。这在 Firefox 中会出错,但我们只关心这个项目的 Chrome,因为iframe
它来自嵌入式 webkit 的实例。
无论如何,这些数据会发送出去,并且由于某种原因总是一个损坏的图像。我还尝试将文件打印成div
base64 编码(实际上是有效的 HTML),然后在发送之前对其进行解码。我只是想不出一个编码/解码/打印的组合来使它在服务器端工作。
我也尝试send
通过以下方式更改sendAsBinary
:
使用 XHR 在 WebKit/Chrome 中上传二进制字符串(相当于 Firefox 的 sendAsBinary)
有任何想法吗?