2014-01-24 3 views
4

Как удалить файл из списка выбранных файлов в плагинах Blueimp перед отправкой формы для загрузки. Я пробовал this SO answer, но его просто удалял файл из пользовательского интерфейса, а не из очереди.Загрузка файла Blueimp: удалите файл из списка файлов перед загрузкой

Вот мой код

$(function(){ 
      $("#UploadPhotos").click(function(){ 
       $("#ItemPhotos").click(); 
      }); 
      $('#ItemPhotos').fileupload({ 
        url: "${pageContext.servletContext.contextPath}/XYZ", 
        //dataType: 'json', 
        autoUpload: false, 
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, 
        maxFileSize: 5000000, // 5 MB 
        // Enable image resizing, except for Android and Opera, 
        // which actually support image resizing, but fail to 
        // send Blob objects via XHR requests: 
        disableImageResize: /Android(?!.*Chrome)|Opera/ 
         .test(window.navigator.userAgent), 
        previewMaxWidth: 171, 
        singleFileUploads:false, 
        previewMaxHeight: 180, 
        previewCrop: true 
       }).on('fileuploadadd', function (e, data) { 
        data.context = $('<div/>').appendTo('#FilesListThumb'); 
        $.each(data.files, function (index, file) { 
         var node = $('<div><h6>X</h6></div>').addClass("thumbnail-ib"); 
         node.appendTo(data.context); 
         node.find("h6").click(function(){ 
          node.remove(); 
         }); 
        }); 
        $("#itemSellForm").submit(function(){ 
         data.formData = $("#itemSellForm").serializeArray(); 
         data.submit(); 
         return false; 
        });       
       }).on('fileuploadprocessalways', function (e, data) { 
        var index = data.index, 
         file = data.files[index], 
         node = $(data.context.children()[index]); 
        if (file.preview) { 
         node 
          .addClass("thumbnail") 
          .append(file.preview); 
        } 
        if (file.error) { 
         node 
          .addClass("thumbnail") 
          .append($('<span class="text-danger"/>').text("Upload Failed")); 
        } 
       }).on('fileuploadfail', function (e, data) { 
        $.each(data.files, function (index, file) { 
         var error = $('<span class="text-danger"/>').text('File upload failed.'); 
         $(data.context.children()[index]) 
          .append('<br>') 
          .append(error); 
        }); 
       }).on("fileuploaddone",function(e,data){ 
        // sendData = false; 
       alert("done"); 
       }); 
     }); 

здесь, когда я нажимаю h6 миниатюра удаляется из щ только не из списка ifles

ответ

4

Каждого BlueImp обратного вызова есть 2 параметра: event и data объекта.

Объект data содержит массив files, который вы можете отредактировать, чтобы изменить файлы, которые будут загружены. Поэтому, если вы удалите один из этих элементов массива (array.pop или другие методы ...) перед отправкой запроса, его можно считать удален.

+0

может у проверить мой обновленный вопрос – manish

+2

О, да он работал я добавил 'data.files.splice (индекс 1).' 'Внутри node.find ("h6") click' – manish

+0

Будьте осторожны, я подумайте, что индекс массива data.files пересчитывается, когда вы удаляете один из объектов в середине массива. – Fractaliste

0

Возможно поможет дополнительно щелкнуть событие (ы) для кнопки UploadPhotos для удаления/развязки.

$("#UploadPhotos").unbind("click") 
Смежные вопросы