2011-07-16 257 views
1

我正在編寫谷歌瀏覽器擴展程序。我有一個遠程服務器上的二進制文件的URL。我想將該文件發佈到其他服務器。所以相關的功能應該是這樣的。將文件從一臺遠程服務器發佈到另一臺服務器

function postFileToExampleCom(fileUrl) { 
    var file = ???; // Blob with data from file located at fileUrl 

    var form = new FormData(); 
    form.append('file', file); 

    var request = new XMLHttpRequest(); 
    request.open('POST', 'http://example.com/post/', true); 
    request.send(form); 
} 

FormData.append()需要第二個參數爲包含文件數據的Blob對象。什麼是最好的方式來獲得它?文件很可能是已經加載到活動選項卡中的圖像,因此最好使用緩存並且不要再次下載此文件。

UPD:我試過用另一個XMLHttpRequest設置下載文件responseType = 'blob'但奇怪的是它返回空的response

回答

0

「..文件很可能是已經加載到活動選項卡中的圖像,所以最好使用緩存而不要再次下載此文件。」

  1. 如果您保存在本地(如使用本地存儲或fileAPI)的文件 - 那麼你應該確保你讀它,並得到一個文件備份,而不是數據的序列化版本。

  2. 我會調試'var file = ???'這一行,看看你到達那裏的目標是什麼。

  3. 這是一個很好的做法,有這3個功能爲您的'請求': onload,onerror和onprogress。

我希望它有幫助。

相關問題