2011-07-28 37 views
2

My Firefoxアドオンdownloadedファイルを保存し、一時フォルダに保存しました。結果では、私はnsIFileインスタンスを持っています。ファイルをサーバーにアップロードする方法は?

どうすればそのファイルを別のサーバーにアップロードできますか? XMLHttpRequestを使用している場合は、nsIFileFormDataに渡す方法がわかりません。

おそらく、ファイルをダウンロードしてtempフォルダに保存しないでください。このファイルの唯一の用途は別のサーバーにアップロードすることです。おそらく、私はファイル(ファイルサイズ〜20Kb)をメモリに保持するべきですか?

答えて

0

データをサーバーにapplication/x-www-form-urlencodedとしてPOSTする場合は、btoa()を使用してbase64でエンコードし、要求本体のPOSTパラメータの1つとしてインクルードする必要があります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をyesにした場合、そのスニペットはそこから読み取る方法を記述します。 –

関連する問題