2011-07-28 24 views
2

我的Firefox插件downloaded該文件並保存在臨時文件夾中。結果我有nsIFile實例。如何將文件上傳到服務器?

如何將該文件上傳到其他服務器?如果我使用XMLHttpRequest,我不明白如何將nsIFile傳遞給FormData

或者,我可能不應該只是下載文件並將其保存在臨時文件夾中 - 因爲此文件的唯一用途是要上傳到另一臺服務器。可能我應該將文件(文件大小〜20Kb)保存在內存中?

回答

0

如果您將數據作爲application/x-www-form-urlencoded發佈到服務器,那麼您應該使用btoa()對base64進行編碼,並將其作爲POST參數之一包含在請求體中(即字符串傳遞給XMLHttpRequest.send()):

postbody = "body=" + btoa(fileContents); 
xhr.send(postbody); 

我同意,如果你只是下載文件並上傳它了,你還不如把它在內存中,因爲你可能會把它加載到記憶無論如何爲了base64編碼的內容。

+0

謝謝,馬修。您能否澄清一下(1)我如何獲得具有nsIFile的fileContents,(2)如何將文件下載到內存然後上傳? –

+0

Re(1):我應該閱讀文件(https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO#Reading_a_Binary_File)嗎? –

+0

那麼,如果你正在將文件讀入內存,那麼你應該需要一個nsIFile。您可以使用XMLHttpRequest下載它並使用responseText,並按照我在答案中描述的方式上傳它。如果你確實有nsIFile,那麼是,該片段描述瞭如何從中讀取。 –

相關問題