我試圖寫一個Safari瀏覽器插件,以搶在用戶打開PDF文檔,然後將其提交到通過POST另一個站點。的Javascript在Safari插件 - 從XHR下載的二進制文件的數據然後重新提交
我做了在Chrome這個工作,但複製同樣的方法不起作用,因爲Safari不與BlobBuilder
工作。
這是在Chrome中是什麼在起作用:
var xhr = new XMLHttpRequest();
xhr.open("GET", tab.url, true);
xhr.responseType = "arraybuffer";
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var bb = new BlobBuilder();
bb.append(this.response);
var blob = bb.getBlob('application/pdf');
var http = new XMLHttpRequest();
http.open("POST", send_url, true);
var formData = new FormData();
formData.append("src", blob);
http.send(formData);
}
產生的POST會談我的PHP腳本,並在其$ _FILES數組是我的文件。完善。
但絕對沒有我嘗試似乎使用Safari工作。我嘗試responseType='blob'
開始,但沒有奏效。我無法使用任何Safari JS文件對象來處理這些數據。我試圖將其更改爲一個UINT8數組但這絲毫不提交數據,只是串說"[object UInt8Array]"
任何想法?
乾杯! 託尼
你真的讓Safari上傳二進制數據嗎?添加一個'ArrayBuffer'到'FormData'對象導致其提交一個畸形多形式,所以服務器'------ WebKitFormBoundaryaiKF2ZGx25JiZdKY報告整個文件的內容 - '。但是,其他任何嘗試都沒有發生,Safari已悄悄發送任何信息。 – Potatoswatter