2013-02-27 45 views
8

Câu hỏi có liên quan đến jquery file upload plugin from blueimpTải lên tệp tùy chọn với plugin tải lên tệp jquery Blueimp

Tôi đang tạo biểu mẫu nơi tải lên tệp là tùy chọn. Hóa ra tôi không thể đăng biểu mẫu khi không có tệp nào được chọn để tải lên. Chỉ vì điều này tôi phải tạo ra hai hình thức trên trang của tôi và làm tất cả các kiểm tra bẩn để xóa các tập tin tải lên nếu người dùng quyết định không thêm dữ liệu thực tế.

Câu hỏi đặt ra là:

Tôi có thể gửi biểu mẫu thậm chí nếu không có tập tin được lựa chọn để tôi vẫn có thể có thể nhận được dữ liệu biểu mẫu bổ sung về phía máy chủ?

+0

bạn đã thử điều này: $ ("#fileupload") .submit(); –

+0

Bạn có thể đăng biểu mẫu ngay cả khi tệp không được chọn. Bạn không nên tạo hai biểu mẫu. – Max

+0

@Max cách này có thể được thực hiện? – Dan

Trả lời

0

Tôi biết đây là một câu hỏi cũ nhưng đối với những người đang phải vật lộn với vấn đề tương tự:

Bạn cần phải thâm nhập vào các Doc là ở đây:

https://github.com/blueimp/jQuery-File-Upload/wiki/Options

Và có một danh sách các sự kiện hữu ích:

$('#fileupload') 
.bind('fileuploadadd', function (e, data) {/* ... */}) 
.bind('fileuploadsubmit', function (e, data) {/* ... */}) 
.bind('fileuploadsend', function (e, data) {/* ... */}) 
.bind('fileuploaddone', function (e, data) {/* ... */}) 
.bind('fileuploadfail', function (e, data) {/* ... */}) 
.bind('fileuploadalways', function (e, data) {/* ... */}) 
.bind('fileuploadprogress', function (e, data) {/* ... */}) 
.bind('fileuploadprogressall', function (e, data) {/* ... */}) 
.bind('fileuploadstart', function (e) {/* ... */}) 
.bind('fileuploadstop', function (e) {/* ... */}) 
.bind('fileuploadchange', function (e, data) {/* ... */}) 
.bind('fileuploadpaste', function (e, data) {/* ... */}) 
.bind('fileuploaddrop', function (e, data) {/* ... */}) 
.bind('fileuploaddragover', function (e) {/* ... */}) 
.bind('fileuploadchunksend', function (e, data) {/* ... */}) 
.bind('fileuploadchunkdone', function (e, data) {/* ... */}) 
.bind('fileuploadchunkfail', function (e, data) {/* ... */}) 
.bind('fileuploadchunkalways', function (e, data) {/* ... */}); 
+0

có bất kỳ sự kiện nào trong số những sự kiện này là câu trả lời cho câu hỏi không? – Agey

4

Tôi cũng gặp vấn đề tương tự. Tôi có một hình thức (được xây dựng trong góc), sử dụng thực hiện góc xanh imp. Bản thân biểu mẫu có các trường; tệp là tùy chọn. Cần phải là một bài đăng duy nhất (có hoặc không có tệp).

Khi gửi() không có gì xảy ra.

"Sự kiện hữu ích" được liệt kê ở trên chỉ được kích hoạt khi tệp được thêm vào.

0

Đặt SingleFileUploads thành false không giúp gì nhiều với trình tải lên tệp JQuery vì dường như có lỗi như đã thảo luận here. Vì vậy, tôi đặt điều đó trở lại thành sự thật.

Tôi đã tách các yếu tố đầu vào thành hai biểu mẫu riêng biệt - một cho đầu vào trường văn bản và một cho tệp (đi qua trình tải tệp lên JQuery). Đối với các trường văn bản, tôi giữ một nút hiển thị mà người dùng có thể nhấp vào. Đối với một người khác, tôi đã giấu nút. Vì vậy, khi người dùng nhấp vào nút hiển thị, tôi chỉ gửi đầu vào văn bản và tạo bản ghi cơ sở dữ liệu trong phần phụ trợ (điều này được thực hiện bằng cách sử dụng cuộc gọi AJAX) và trong trường thành công của cuộc gọi AJAX, tôi .click() nút ẩn nếu số lượng tệp lớn hơn 0.

0

Tôi biết tôi đến muộn với bữa tiệc, nhưng không có giải pháp thực tế nào được liệt kê cho đến nay. Bạn có thể giả thực tế có được một tập tin được thêm vào, bằng cách thủ công gọi add sự kiện như:

$('#fileupload').fileupload('add', { files: [{}] }); 

Bạn sẽ thiết lập một biến để lưu trữ các thông tin hình thức, cập nhật các biến khi add và kích hoạt thêm như trên nếu không có tệp nào. Dưới đây là mã trông như thế nào:

var fileData; 
$('#fileupload').fileupload({ 
    add: function (e, data) { 
     fileData = data; 
    } 
}); 

$('form').submit(function() { 
    if (!fileData) { 
     $('#fileupload').fileupload('add', { files: [{}] }); 
    } 
    fileData.formData = params; 
    fileData.submit(); 
    return false; 
}); 

Điều này cho phép bạn duy trì sự nhất quán với cách dữ liệu được truyền tới máy chủ.

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