【发布时间】:2011-09-10 22:37:24
【问题描述】:
我正在尝试使用Blueimp's jQuery-File-Upload 插件,从demo 来看,它看起来很有希望。
实现起来真的很简单:
var $uploadButton = $("#fileop-upload");// <input type="file" id="fileop-upload" [etc] />
$uploadButton.fileupload({
url : "//domain/path/to/receive-uploaded-files"
});
所选文件上传正常,无需按预期刷新页面,但当然,像这样的最小配置用户不会收到任何通知。这就是插件的回调会派上用场的地方。
根据文档,定义回调有两种方法。 For example the add event (which fires whenever a file is selected for uploading) can be added in the original configuration object like this:
$uploadButton.fileupload({
add : addFileListener,
url : "//domain/path/to/receive-uploaded-files"
});
或者:
$uploadButton.bind("fileuploadadd", addFileListener);
但是我发现只有第一种方法有效,第二种方法不起作用。
更奇怪的是,无论我如何绑定它们,似乎都没有其他回调——尤其是 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 侦听器从未激活?
【问题讨论】:
-
-
出于好奇,您能确认一下您使用的是什么 jQuery 和上传器版本吗?我正在使用 jQ 1.5.2 和 4.4.2 版本的上传插件。
-
我使用了最新的、新下载的 jQuery 版本和上传插件。无论如何,我现在已经放弃了这个插件,并开发了一个纯粹的基于文件 API 的解决方案 (blog.new-bamboo.co.uk/2010/7/30/html5-powered-ajax-file-uploads),它只适用于 FF4+、Chrome 和 Safari,但幸运的是,这对于我现在的目的来说是可以接受的。
标签: jquery file-upload callback jquery-file-upload blueimp