4

保存する必要があるファイルのリストがあり、名前に加えて、readAsDataURL もサーバーに送信する必要があります。

問題は、readAsDataURL の非同期の性質でそれを行う方法がわからないことです。DATAURL を配列に保存するには、ファイル リストにあるファイルの名前を検索する必要があるためです。readAsDataURL の async メソッドにファイルを渡すことができません。これを正しく機能させるにはどうすればよいですか?最終結果は、1 つの JSZip ファイルでサーバーに送信されるファイルのリストが必要です。

function saveFileList(files)
{
    for (var i = 0, file; file = files[i]; i++) {

        var fr = new FileReader();
        fr.onload = function(e){
        if (e.target.readyState == FileReader.DONE) {
            var tt = e.target.result.split(",")[1];
                             //update the record in the list with the result
            }
         };

        var pp = fr.readAsDataURL(file);
  }
4

3 に答える 3

0

Russell Gの答えの代替:

var reader = new FileReader();
reader.onload = function(event){
   payload = event.target.result;
   var filename = file.name, filetype = file.type;//etc
   //trigger a custom event or execute a callback here to send your data to server.
};
reader.onerror = function(event){
   //handle any error in here.
};
reader.readAsDataURL(file);
于 2014-01-16T04:01:03.870 に答える
0

ファイルを渡すことができるように、その周りに別の関数が必要です。これを試してください:

var reader = new FileReader();

reader.onload = (function(theFile) {
   return function(e) {
      if(reader.readyState == FileReader.DONE)
         alert(theFile.name);   // The file that was passed in.
      }
   };
})(file);

reader.readAsDataURL(file);
于 2013-06-28T17:53:50.323 に答える