2011-12-26 13 views
2

複数のファイルを1つの関数Aに読み込む必要があります.FileAPIを使用する必要があります。 しかし、FileReaderは非同期ダウンロードを実行します。 機能Aの終わりにすべてのファイルの内容を終了せずに取得することはできますか、できませんか?FileAPIを介したファイルのアップロード

答えて

1

FileReaderは完全にはっきりしていますが、何もダウンロードしていません。これは、(ディスク上に表示されている)ファイルの内容を非同期的にメモリに読み込みます。

document.querySelector('[type="file"]').change = function(e) { 
    handleFiles(toArray(e.target.files), function(results) { 
    // results is an Array containing the FileReader results. 
    alert('Done!'); 
    }); 

function toArray(list) { 
    return Array.prototype.slice.call(list || [], 0); 
} 

function handleFiles(files, callback) { 
    var results = []; 

    files.forEach(function(file, i) { 
    var reader = new FileReader(); 

    // Closure to capture the file information. 
    reader.onload = function(e) { 
     results.push(e.target.result); 
     if (results.length == files.length) { 
     callback(results); 
     } 
    }; 
    reader.readAsDataURL(file); 
    }); 
} 

はそれを試してみてください:あなたのコード例やリンクのhttp://jsbin.com/epatel/3/edit#html,live

+0

大感謝を単に読み取りファイルを追跡し、それらがすべて終わったときにコールバックを呼び出して、あなたがやりたい

! – ekruten

関連する問題