2012-03-06 36 views
12

Tôi đang sử dụng plugin jquery.fileupload blueint upload file sử dụng asp.netVô hiệu hóa tính năng tự động tải lên trên Blueimp jQuery Tập tin Tải

Tôi có một tình huống mà tôi có một trang cho phép người dùng lựa chọn một thể loại (dropdownlistbox), tiêu đề (đối với tệp được tải lên - TextBox) và đầu vào tệp (được xử lý bởi plugin).

plugin: 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> 

Vấn đề của tôi là, các tập tin được tải lên (thông qua một handler http) ngay sau khi tôi Chọn một tập tin. Tôi có thể xử lý nó để gửi dữ liệu biểu mẫu khác cùng với nó tuy nhiên, tôi muốn cháy sự kiện này trên nút gửi như tôi cần phải thực hiện một số xác nhận. Ngoài ra, người dùng có thể muốn chọn tệp trước và sau đó điền vào các phần khác của biểu mẫu, trong trường hợp này anh/cô ấy không thể làm, do biểu mẫu được gửi trước khi anh/cô ấy có thể làm điều đó.

Vì tôi không phải là một lập trình viên javascript rất tốt, tôi không có ý tưởng nếu chức năng này đã có sẵn (có thể là) trong các tệp .js có sẵn với plugin. Bất kỳ ý tưởng gì tôi cần phải thay đổi hoặc làm gì?

Trả lời

6

này là rất dễ dàng để làm như có một tùy chọn " autoUpload: true" mà được thiết lập như mặc định trong jquery.fileupload-ui.js

Nếu bạn thay đổi nó để false và bạn có thể tự mã trên sự kiện Click vào nút.

+0

Cảm ơn cho câu trả lời, tôi không có tập tin đó vì vậy tôi đã tải về và đưa nó vào dự án của tôi và trên trang có liên quan. Sau đó, thay đổi autoUpload thành false như đề xuất nhưng không có gì thay đổi. Vẫn tải lên ngay sau khi tôi chọn tệp. Tôi có cần phải thay đổi bất cứ điều gì trong mã? Tôi có các tệp này. Có thể có điều gì đó về nó: + jquery-1.7.js + jquery-ui-1.8.17.custom.min.js + jquery.fileupload.js + jquery.iframe-transport.js + jquery. fileupload-ui.js –

+0

@ Emin-Đây là đường dẫn của tệp tin jquery fileupload-ui.js mà từ đó bạn có liên kết jQueryFileUpload.Net/jQueryFileUpload/scripts/Default/jquery.fileupload-ui.js (Hoặc) bạn có thể tìm thực hiện asp.Net từ đây http://www.webtrendset.com/2011/06/22/complete-code-example-for-using-blueimp-jquery-file-upload-control-in-asp-net/ – coder

+0

@ Emin-Tới trang này https://github.com/blueimp/jQuery-File-Upload/downloads để tải xuống phiên bản mới nhất và mở nó trong trình thám hiểm giải pháp và điều hướng đến thư mục js và trong đó bạn có thể tìm thấy jquery.fileupload- ui.js và tìm kiếm autoupload và đặt nó thành 'false' thay vì 'tr ue '. và nếu bạn muốn sử dụng bootstrapper thì bạn nên sử dụng Jquery 1.7+ – coder

17

Gọi lại add được gọi ngay sau khi tệp được thêm vào tiện ích, vì vậy bạn cần ghi đè tệp để tạm dừng tải lên và sau đó bắt đầu bằng cách nhấp vào nút.

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

Cập nhật: Các tài liệu có better example điều này bây giờ:

+5

Chính xác những gì tôi đang tìm kiếm. Vấn đề duy nhất là hộp văn bản không hiển thị filepath .. – ffffff01

Các vấn đề liên quan