私はBlueimp の jQuery-File-Uploadプラグインを試していますが、デモから判断すると非常に有望に見えます。
実装はとても簡単です:
var $uploadButton = $("#fileop-upload");// <input type="file" id="fileop-upload" [etc] />
$uploadButton.fileupload({
url : "//domain/path/to/receive-uploaded-files"
});
選択したファイルは、期待どおりにページを更新せずに正常にアップロードされますが、もちろん、このような最小限の構成では、ユーザーは通知を受け取りません。ここで、プラグインのコールバックが役に立ちます。
ドキュメントによると、コールバックを定義するには 2 つの方法があります。たとえば、add
イベント (ファイルがアップロード用に選択されるたびに発生する) は、次のように元の構成オブジェクトに追加できます。
$uploadButton.fileupload({
add : addFileListener,
url : "//domain/path/to/receive-uploaded-files"
});
または代わりに:
$uploadButton.bind("fileuploadadd", addFileListener);
ただし、最初のアプローチのみが機能し、2 番目のアプローチは何もしないことがわかりました。
さらに興味深いのは、どのようにバインドしても、他のコールバック (特にprogress
と) が起動していないように見えることです。start
$uploadButton.fileupload({
add : addFileListener,
progress : progressListener,
start : startListener,
url : "//domain/path/to/receive-uploaded-files"
});
また
$uploadButton.fileupload({
add : addFileListener,
url : "//domain/path/to/receive-uploaded-files"
});
$uploadButton.bind("fileuploadprogress", progressListener");
$uploadButton.bind("fileuploadstart", startListener");
参照されたリスナー関数を定義しましたが、コードはエラーや警告を報告しません。
メソッドが失敗した理由は何ですか?また、またはリスナーがアクティブに.bind
ならないのはなぜですか?progress
start