2011-07-16 19 views
1

Google Chrome拡張機能を作成しています。私は、リモートサーバー上のバイナリファイルの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()は、第2引数がファイルデータを含むBlobオブジェクトであると想定しています。それを得るための最善の方法は何ですか?ファイルは既にアクティブなタブに読み込まれている画像になる可能性が高いので、キャッシュを使用してこのファイルを再度ダウンロードしないことが望ましいです。

UPD:別のXMLHttpRequest設定ファイルresponseType = 'blob'をダウンロードしようとしましたが、不思議なことに空番号responseが返されます。

答えて

0

"ファイルはすでにアクティブなタブに読み込まれている画像なので、キャッシュを使用してこのファイルをもう一度ダウンロードしない方がよいでしょう。"

  1. あなたが(例えばのlocalStorageやfileAPIを使用して)ローカルにファイルを保存した場合 - その後、あなたはそれを読んで、バックではなく、データのシリアル化されたバージョンを、ファイルを取得して確認する必要があります。

  2. 私は 'var file = ???'の行をデバッグします。あなたがそこに着くobjが何であるかを見てください。

  3. これらの3つの機能を「リクエスト」に含めることをお勧めします。 onload、onerror、onprogress。

私はそれが役に立ちそうです。

関連する問題