2012-03-06 3 views
12

Я использую blueint jquery.fileupload плагин для загрузки файлов с помощью asp.netОтключение автоматического скачивания на Blueimp JQuery Файл Загрузить

У меня есть ситуации, когда у меня есть страницы, чтобы позволить пользователю выбрать категорию (dropdownlistbox), заголовок (для загруженного файла - TextBox) и ввод файла (обрабатываемый плагином).

плагин: https://github.com/i-e-b/jQueryFileUpload.Net

JavaScript/JQuery:

$('#fileup').fileupload({ 
        replaceFileInput: false, 
        formData: function (form) { 
         return [{ name: 'dcat', value: $('#ddlCats').val() }, { name: 'title', value: $('#txtTitle').val()}]; 
        }, 
        dataType: 'json', 
        url: '/_handlers/FileHandler.ashx', 
        add: function (e, data) { 
         var valid = true; 
         var re = /^.+\.((doc)|(xls)|(xlsx)|(docx)|(pdf)|(pts))$/i; 
         $.each(data.files, function (index, file) { 
          if (!re.test(file.name)) { 
           $('#uploaded').html('This file type is not supported'); 
           valid = false; 
          } 
         }); 
         if (valid) 
          data.submit(); 
        }, 
        done: function (e, data) { 
         $.each(data.result, function (index, file) { 
          $('#uploaded').html(file); 
         }); 
         GetFiles($('#ddlCats').val()) 
        }, 
        error: function() { 
         alert('An error occured while uploading the document.'); 
        } 
       }); 

HTML:

<div id="fUpload"> 
<span style="font-weight:bold;">Yeni Belge:</span><br /> 
    <table class="ktoeos"> 
     <tr> 
      <td>Category:</td> 
      <td> <select id="ddlCats"></select></td> 
     </tr> 
     <tr> 
      <td>Document Description:</td> 
      <td><input type="text" id="txtTitle" /></td> 
     </tr> 
     <tr> 
      <td>Select Document:</td> 
      <td><input type="file" name="file" id="fileup" /></td> 
     </tr> 
     <tr> 
      <td colspan="2"><input type="submit" id="btnSubmit" value="Upload" /></td> 
     </tr> 
    </table> 
    <div id="uploaded"></div> 

Моя проблема, файл получает загружены (через обработчик HTTP) сразу после того, как я выберите файл. Я могу обработать его, чтобы отправить другие данные формы вместе с ним, однако, я хочу запустить это событие на кнопку submit, поскольку мне нужно выполнить некоторую проверку. Также пользователь может сначала выбрать файл, а затем заполнить другие части формы, которые в этом случае он/она не может сделать, из-за формы, которая будет представлена ​​до того, как он сможет это сделать.

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

ответ

6

Это очень легко сделать, так как есть вариант " autoUpload: true", который устанавливается по умолчанию в jquery.fileupload-ui.js

Если вы измените его false и вручную можно код на кнопку Click события.

+0

Спасибо за ответ, у меня не было этого файла, так что я скачал и включил его в свой проект, и в верхней части соответствующей страницы. Затем изменил autoUpload на false, как было предложено, но ничего не изменилось. Все равно загружает, как только я выбираю файл. Нужно ли мне что-то менять в коде? У меня эти файлы включены. Может быть, есть что-то об этом: + JQuery-1.7.js + JQuery-щ-1.8.17.custom.min.js + jquery.fileupload.js + jquery.iframe-transport.js + JQuery. fileupload-ui.js –

+0

@ Emin-Вот путь к файлу jquery fileupload-ui.js, с которого вы указали ссылку jQueryFileUpload.Net/jQueryFileUpload/scripts/Default/jquery.fileupload-ui.js (или) вы можете найти реализацию asp.Net здесь http://www.webtrendset.com/2011/06/22/complete-code-example-for-using-blueimp-jquery-file-upload-control-in-asp-net/ – coder

+0

@ Emin-Перейти на эту страницу https://github.com/blueimp/jQuery-File-Upload/downloads загрузить последнюю версию и открыть ее в браузере решений и перейти в папку js, и в этом вы можете найти jquery.fileupload- ui.js и выполните поиск autoupload и установите для него значение 'false' вместо 'tr уе. и если вы хотите использовать bootstrapper, тогда вы должны использовать JQuery 1.7+ – coder

17

Обратный вызов add вызывается, как только файлы добавляются в виджет, поэтому вам необходимо переопределить его, чтобы приостановить загрузку, а затем запустить его нажатием кнопки.

add: function (e, data) { 
    $("#btnSubmit").click(function() { 
     // validate file... 
     if(valid) 
      data.submit(); 
    }); 
} 

Update: В документации есть better example этого прямо сейчас:

+5

Именно то, что я искал. Единственная проблема заключается в том, что текстовое поле не показывает путь к файлу. – ffffff01