2015-05-19 1 views
1

У меня есть вид MVC 5 с формой и секцией загрузки файлов plupload. Загрузка запускается кнопкой в ​​форме. У меня нет проблем с загрузкой фрагментов файла на сервер и установкой параметров в строку запроса и все, но у меня есть проблема с запуском загрузки только после того, как была выполнена обычная проверка работоспособности.Plupload: выполнить пользовательскую проверку перед загрузкой

Вот что я пробовал:

var uploader = new plupload.Uploader({ 
runtimes: 'html5', 
drop_element: 'upload', 
browse_button: 'browse', 
url: "../UploadFile", 
chunk_size: "1024kb", 
multipart_params: { "uid": "uid", "chunk": "chunk", "chunks": "chunks", "name": "name" }, 
init: { 
    PostInit: function(file) { 
    document.getElementById("filelist").innerHTML = ""; 
    document.getElementById('submit-all').onclick = function() { 
    document.getElementById("infoPopup").style.visibility = "visible"; 
    document.getElementById('submit-all').enabled = false; 
    var uuid = Math.uuidFast(); 
    document.getElementById("uid").value = uuid; 
    uploader.settings.multipart_params = { uid: uuid, chunk: file.chunk, chunks: file.chunks, name: file.name }; 
    if (checkReq) { 
    uploader.start(); 
    } 
    return false; 
    }; 
    }, 

Решающую часть здесь заключается в следующем:

if(checkReq){ 
    uploader.start(); 
} 

«checkReq» мой пользовательское здравомыслие проверки скрипт, который проверяет, что значения формы не являются бессмысленными (например, записи одной формы могут быть совершенно правильными, в то время как в комбинации они просто неправильны и т. д.).

Таким образом, вышесказанное не предотвращает загрузку, скрипт проверки даже не запускается, вывод консоли Firebug не показывает ошибки.

Так говорит мне, прибегая к помощи, что есть и «BeforeUpload» событие, я попытался это:

BeforeUpload: function(up, file) { 
    if (checkReq) { 
     up.stop(); 
     return false; 
    } 
    return true; 
}, 

Который также, кажется, не срабатывать.

Edit: Следующая попытка, я положил призыв к моему checkReq Fuction в BeforeUpload в «PreInit», который должен огня до того, отрывы и т.д. делается, поэтому перед подготавливаются загрузка. Это также не, хотя я понятия не имею, почему это не пожар:

var uploader = new plupload.Uploader({ 
    runtimes: 'html5', 
    drop_element: 'upload', 
    browse_button: 'browse', 
    url: "../UploadFile", 
    chunk_size: "1024kb", 
    multipart_params: { "uid": "uid", "chunk": "chunk", "chunks": "chunks", "name": "name" }, 

    preinit: { 
     BeforeUpload: function (up) { 
      if (checkReq) { 
       uploader.stop(); 
       uploader.splice(0, uploader.files.length); 
       return false; 
      } 
      return true; 
     } 
    }, 

    init: { 
     PostInit: function(file) { 
... 

я использовал «dropzone.js» раньше, и мой сценарий работал хорошо с этим, но я обнаружил, что я нуждался в блочной загрузки, так что я должен был перейдите в plupload, и теперь мой скрипт игнорируется.

Не могли бы вы рассказать мне, где я здесь глуп? Благодаря!

ответ

2

Понадобилось решить. Это неприятный, некрасивый хак, но он работает:

  • Сделано кнопку «фактический» представить/закачивать скрытый
  • сделал вторую кнопку, которая действует как кнопка предварительного Подавать с OnClick функции функции
  • OnClick вызывает checkReq, и если это возвращает true, функция вызывает функцию click() «фактической» кнопки отправки/выгрузки

Как я уже сказал: неприятный, но он работает.