2013-06-09 17 views
20

Tôi đang sử dụng plugin dropzone.js để thêm trình tải lên hình ảnh vào ứng dụng của tôi. Tôi biết điều này có lẽ là một câu hỏi thực sự cơ bản để xin lỗi nhưng những gì tôi muốn làm là giới hạn các phần mở rộng tập tin. Này làm việc cho một phần mở rộng tập tin duy nhất,tải lên hình ảnh dropzone.js được chấp nhậnMimeTypes

<script type="text/javascript"> 
    Dropzone.options.dropzone = { 
     accept: function(file, done) { 
      console.log(file); 
      if (file.type != "image/jpeg") { 
       done("Error! Files of this type are not accepted"); 
      } 
      else { done(); } 
     } 
    } 
</script> 

Vì vậy, câu hỏi của tôi là làm thế nào để thêm nhiều phần mở rộng tập tin, ví dụ: image/jpeg, image/png?

Cảm ơn

Trả lời

11

Bạn có thể thêm phần mở rộng để if của bạn, như vậy:

if (file.type != "image/jpeg" && file.type != "image/png") { 

này sẽ kiểm tra nếu kiểu tập tin là khác nhau từ tất cả các loại bạn chỉ định. Đối với một tập tin để vượt qua kiểm tra, nó có thể khác nhau từ image/jpeg VÀ image/png

Cập nhật

tôi sẽ tư vấn để nhìn vào enyo's answer kể từ khi ông là tác giả của dropZone.

+1

Xin cảm ơn, điều đó có tác dụng. – user1098178

81

Tôi là tác giả của Dropzone.

Bạn nên sử dụng acceptedMimeTypes acceptedFiles. Điều này hoạt động chính xác giống như thuộc tính accept của phần tử input. Bằng cách này, ngay cả dự phòng cũng sẽ hoạt động bình thường.

trị acceptedFiles thuộc tính có thể trông như thế này:

  • audio/*
  • image/*
  • image/jpeg,image/png
  • vv ...

EDIT: trong các phiên bản mới nhất của dropZone điều này đúng y được gọi là acceptedFiles và nó cho phép bạn cũng xác định tiện ích mở rộng. Vì vậy, đây sẽ làm việc:

"audio/*,image/*,.psd,.pdf"

(Đối với khả năng tương thích ngược acceptedMimeTypes sẽ vẫn làm việc cho đến khi việc phát hành lớn tiếp theo)

+3

Sẽ tốt hơn khi có một tài sản tương tự nhưng ngược lại. Chặn các loại tệp nhất định. Ví dụ: tôi đang sử dụng trình tải lên này cùng với PHP và tôi không quan tâm đến tệp nào họ tải lên miễn là chúng không phải là tệp PHP. Tôi có thể làm điều này thông qua PHP ngay bây giờ. Tôi thực sự đào sâu trình tải lên này mà bạn đã thực hiện, công việc tuyệt vời. – Ronnie

+0

@enyo Điều này không hoạt động khi bạn kéo và thả tệp, nó không kiểm tra loại mime –

+0

@enyo bất kỳ thông tin nào về vấn đề kéo và thả? –

5
var myDropzone = new Dropzone('div#profile_pictures',{ 
    acceptedFiles: "image/*"; /*is this correct?*/ 
    init: function(){ 
     this.on("success", function(file, data) { 
      /*..*/ 
      }); 
     } 
}) 
19

nhờ Enyo nó làm việc .... tuyệt vời ... chỉ cần dán dòng trong dropjone.js->

uploadMultiple: true, (upload multiple files) 
maxFilesize: 1, (1 mb is here the max file upload size constraint) 
acceptedFiles: ".jpeg,.jpg,.png,.gif", 

http://www.dropzonejs.com/#config-acceptedFiles

Việc triển khai mặc định chấp nhận sẽ kiểm tra loại mime hoặc tiện ích mở rộng của tệp đối với danh sách này. Đây là danh sách các loại mime hoặc phần mở rộng tệp được phân tách bằng dấu phẩy. Ví dụ: 'image/*,application/pdf,.psd' Nếu Dropzone có thể nhấp, tùy chọn này cũng sẽ được sử dụng làm thông số chấp nhận trên đầu vào tệp ẩn.