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
考慮します。
とにかく、このデータが送信され、何らかの理由で常に破損したイメージになります。また、ファイルをdiv
base64 エンコード (実際には有効な HTML ) に出力し、送信する前にデコードすることも試みました。サーバー側で動作させるエンコード/デコード/印刷の組み合わせを思いつくことができません。
私も次のように変更しようとしsend
ましたsendAsBinary
:
XHR を使用して WebKit/Chrome にバイナリ文字列をアップロードする (Firefox の sendAsBinary に相当)
何か案は?