загрузка файла blueimp. Как очистить существующий список файлов

Я много гуглил, но не нашел решения своей проблемы. Автор виджета ссылается на последний ответ 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 });
    });

Спасибо.


person Antipod    schedule 25.03.2013    source источник


Ответы (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;
        });
     ...
)};

как вы можете видеть, я создаю внутри события добавления свой набор файлов с «newfileDiv (file.name)». это создает div со всей информацией о файле (имя, размер, ...) и анкор, который существует для удаления файла из списка. на этом анкоре я привязываю событие клика, в котором у меня есть реализация удаления.

надеюсь это поможет!

person dotnetsharp    schedule 25.03.2013
comment
Спасибо за ответ. Означает ли это, что нет нативного и умного способа (например, вызвать метод) для очистки списка? Ты знаешь почему? - person Antipod; 25.03.2013

Я знаю, что это не самое элегантное решение, но мне нужно было очень быстро и грязно... вот что я сделал (используя 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`) .

person Jeff Johnson    schedule 01.07.2013

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.

person user3821354    schedule 09.07.2014
comment
Я ищу это простое решение для удаления изображений с экрана после загрузки. Почему это нигде не упоминается в документах, мне не понятно. Это должно быть решением №1 СПАСИБО - person user1946891; 16.08.2015