我已经研究了很多,但还没有找到解决我的问题的方法。小部件的作者参考了FAQ的最后一个答案,但FAQ没有答案或者我找不到答案。我想从那时起它就更新了。其他遇到同样问题并提出同样问题的人就消失了,没有提供任何解决方案。
无论如何,就我而言,我有一张带有按钮图片的桌子:
当用户单击其中一张图片按钮时,会显示模式对话框。用户现在可以管理所选行的图片。他可以上传、删除图片等等。当用户打开表中第二行的对话框时,他应该“仅”看到第二行的图片。它告诉我,每次用户点击“图片”按钮查看对话框时,我都必须清理上传文件的列表。他将从服务器接收与所选行相对应的图片列表。不幸的是,当我检索所选行的列表时,接收到的文件将添加到现有列表中。 您能告诉我如何在不删除服务器端文件的情况下清理列表或重置小部件吗?
更新我使用了以下代码作为临时解决方案。
jQuery.ajax({
url: "<YOUR URL HERE>",
dataType: 'json',
context: $('#fileupload')[0]
}).done(function (result) {
jQuery("#fileupload").find(".files").empty(); //this line solves the issue
jQuery(this).fileupload('option', 'done').call(this, null, { result: result });
});
谢谢你。
这是我如何解决这个问题的:
$('#html5FileInput').fileupload({
....
add: function (e, data) {
$.each(data.files, function (index, file) {
var newFileDiv = $(newfileDiv(file.name));
$('#fsUploadProgressHtml5').append(newFileDiv);
newFileDiv.find('a').bind('click', function (event) {
event.preventDefault();
var uploadFilesBox = $("#fsUploadProgressHtml5");
var remDiv = $(document.getElementById("fileDiv_" + event.data.filename));
removeFileFromArray(event.data.filename);
remDiv.remove();
data.files.length = 0;
...
});
data.context = newFileDiv;
});
...
)};
如您所见,我在添加事件中使用“newfileDiv(file.name)”创建了我的文件数据集。这将创建一个包含有关文件的所有信息(名称、大小等)的 div 以及一个用于从列表中删除文件的锚点。在这个锚点上,我绑定了一个点击事件,其中我有删除实现。
希望这有帮助!
//manually trigger the cancel button for all files...removes anything that isn't uploaded yet
$('.fileupload-buttonbar .cancel').first().trigger('click');
//check the checkbox that selects all files
if(!$('.fileupload-buttonbar .toggle').first().checked) {
$('.fileupload-buttonbar .toggle').first().trigger('click');
}
//manually trigger the delete button for all files
$('.fileupload-buttonbar .delete').first().trigger('click');
我知道这不是最好的方法。我知道它并不优雅......但它对我有用并从插件中删除了所有内容。
如果您已将插件中的文件名或其他任何内容添加到任何本地数组或对象,则需要手动清理它们(我有几个在
fileuploadadded
、
fileuploadsent
、fileuploadcomplete
、 上触发的处理程序) fileuploadfailed
和“fileuploaddestroyed”事件)。有一个 scandir 函数负责列出文件。只需像我上面所做的那样取消注释即可,您的问题就解决了。它可以在 UploadHandler.php 文件中找到。