2013-09-24 2 views
0

Я загружаю несколько файлов с FineUploader, и у меня есть кнопка отмены, чтобы остановить процесс загрузки и удалить все файлы, которые были загружены. Когда я нажимаю «Удалить» в каждом файле, он работает нормально, но с некоторого времени назад (не уверен, было ли это с обновлением до 3.9 или до этого), я получаю пустое предупреждение и сообщение «Удалить сбой», но файлы удаляются с сервера, поэтому сервлет работает нормально.Ошибка удаления файлов с FineUploader

Мой код для удаления файлов что-то вроде этого:

function clearFiles() { 
    var array = document.getElementsByClassName("qq-upload-delete"); 
    for (var i = 0; i < array.length; i++) { 
     array[i].style="display: inline;"; 
     array[i].click(); 
    } 
} 

Я предполагаю, что если проблема может быть быть пытается удалить файлы без ожидания сообщения подтверждения (поэтому я удалить следующий прежде чем я получу ответ от предыдущего) или что-то еще, но я не могу объяснить пустое предупреждение. Я не нашел никакой документации или примера об этом. Есть идеи?

Console Log: Код

Uncaught ReferenceError: Modernizr is not defined. 
Uncaught Error: Element not found drop. 
[FineUploader 3.9.0-3] DELETE request for 0 has failed - response code 0 
[FineUploader 3.9.0-3] Delete request for 'test File.pdf' has failed. id: test File.pdf, fileName: Delete request failed with response code 0, reason: [Object XMLHttpRequest] 

Сервер:

public void doDelete(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { 
    String uuid = req.getPathInfo().replaceAll("/", ""); 
    FileUtils.deleteUploadedFile(uuid); 
    resp.setStatus(successResponseCode); 
} 

FineUploader определение

myUploader = new qq.FineUploader({ 
    element: $('#file-uploader')[0], 
    multiple: false, 
    autoUpload: true, 
    deleteFile: {enabled: true, forceConfirm: false, endpoint: '/upload-portlet/fineupload/receiver'}, 
... 
}); 

imageUploader = new qq.FineUploader({ 
    element: $('#image-uploader')[0], 
    multiple: false, 
    autoUpload: true, 
    deleteFile: {enabled: true, forceConfirm: false, endpoint: '/upload-portlet/fineupload/receiver'}, 
... 
}); 

метод New clearFiles

function clearFiles() { 
    if (myUploader && myUploader.getUploads()) { 
     var array = myUploader.getUploads(); 
     for (var i = 0; i < array.length; i++) { 
      myUploader.deleteFile(array[i].id); 
     } 
    } 
    if (imageUploader && imageUploader.getUploads()) { 
     var array = imageUploader.getUploads(); 
     for (var i = 0; i < array.length; i++) { 
      imageUploader .deleteFile(array[i].id); 
     } 
    } 
} 

Это не работает для imageUploader, но это делает для myUploader. Любая идея почему?

+0

Почему вы делаете это снова, а не просто вызываете метод API deleteFile? Кроме того, перечислите все ваши клиентские коды и сообщения в консольном журнале. –

+0

По требованиям, у меня есть два экземпляра fineuploader в том же jsp. Должен ли я использовать что-то вроде $ ('# id'). FineUploader ('deleteFile', id) ;? – Asier

+0

Да. Кроме того, разместите свой код на стороне клиента и содержимое консоли javascript, чтобы мы могли дополнительно помочь. –

ответ

0

В onDeleteComplete возникла проблема, которая повлияла на функциональность. Исправляя это, работали оригинальные clearFiles.

Большое спасибо команде FineUploader за помощь!

+0

Вы должны выслать свой оригинальный код выше, а ваш рабочий код ниже для других, чтобы узнать из :) –

+0

Спасибо за предложение Mark. Я всегда стараюсь размещать как можно больше кода, но в этом случае jsp слишком сложный, поэтому лучше держать его простым. Попробует создать что-то полезное для соответствующего :) – Asier

+0

> В onDeleteComplete возникла проблема, которая повлияла на функциональность. - вы могли бы по крайней мере опубликовать свои функции до и после onDeleteComplete. Я согласен с тем, что JSP будет в основном бесполезен для других. –

Смежные вопросы