我已经瞪眼了很多,但还没找到解决我问题的方法。小部件的作者引用了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 });
});
谢谢。
答案 0 :(得分:3)
我也尝试了一个小时来完成上传工作;)
这是我如何解决这个问题:
$('#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;
});
...
)};
你可以看到我在add-event中创建了我的文件数据集'newfileDiv(file.name)'。这将创建一个div,其中包含有关文件(名称,大小,...)的所有信息以及用于从列表中删除文件的ankor。在这个ankor上我绑定了一个click事件,其中我有删除实现。
希望这有帮助!
答案 1 :(得分:1)
我知道这不是最优雅的解决方案,但我需要一个非常快速和肮脏的...所以这就是我所做的(使用jQuery)。
//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`事件)。
答案 2 :(得分:0)
protected function get_file_objects($iteration_method = 'get_file_object') {
$upload_dir = $this->get_upload_path();
if (!is_dir($upload_dir)) {
return array();
}
return array_values(array_filter(array_map(
array($this, $iteration_method)
//scandir($upload_dir)
//File listing closed by Doss
)));
}
有一个scandir函数负责列出文件。只是像我上面所做的那样取消注释,你的问题就解决了。它可以在UploadHandler.php文件中找到。