0

ファイルの名前とサイズを JavaScript の FileHandler の .onload イベントに渡す方法を教えてください。ご覧のとおり、(まだ宣言されていない) 変数sizename以下の Ajax 呼び出しを使用しています。ただし、関数からそれらを渡す必要がありgetData()ます。

Pass a parameter to FileReader onload イベントを見つけましたが、うまくいかないようです。

getData('file2093', 
  function(e) { 
    new Ajax.Request('/documents/2093', { 
      asynchronous:true, evalScripts:true, method:'patch', parameters:'document_payload=' + btoa(e.target.result) + '&document_filename=' + btoa(name) + '&document_size=' + btoa(size) 
      }); 
  })

function getData(inputField, onLoadCallback){
    var input = document.getElementById(inputField);
    var file = input.files[0];
    var size = file.size;
    var name = file.name;
    var fr = new FileReader();
    fr.onload = onLoadCallback
    fr.readAsDataURL(file);
}
4

1 に答える 1

1

bind、最初の引数が呼び出された関数に渡された後、関数の呼び出し中に渡された他の引数とともに使用します。

getData('',function(size,name,e){
...
});
...
fr.onload = onLoadCallback.bind(fr,size,name);

それ以外の場合は、コールバックを呼び出す無名関数にオンロードを設定します

fr.onload = function(e){
  onLoadCallback(size,name,e);
};

リーダー オブジェクトにアクセスする必要がある場合は、2 番目のスニペットでも filereader オブジェクトを渡します。最初のスニペットはコールバック関数のコンテキストを設定するため、コールバックでリーダー オブジェクトにアクセスできthisます。

于 2014-06-25T08:09:31.390 に答える