2012-06-25 33 views
9

Tôi đang làm việc thông qua tập lệnh tải lên tệp nhỏ (trải nghiệm học tập) và tôi nhận thấy rằng khi chọn tệp liên quan đến văn phòng microsoft (ví dụ: .doc hoặc .docx) một loại quy định:Xác định loại nội dung không xác định bằng tệp Html5 api

filelist

Đối với các file .doc tôi mong đợi đã loại được "application/msword" và dọc theo tàu cùng .docx nghĩ là "application/vnd.openxmlformats-officedocument.wordprocessingml.document".

Trong trường hợp loại không thể xác định được là hành động chính xác để xem xét phần mở rộng của tệp và khớp với loại nội dung "mong đợi" đó?

Mẫu kịch bản:

<div id="fileUpload"> 
    <input type="file" id="fileElem" style="display:none;" onchange="handleFiles(this.files)"/> 
    <a href="#" id="fileSelect">Select some files</a> 
</div> 

<script type="text/javascript"> 
    var fileSelect = document.getElementById("fileSelect"), 
     fileElem = document.getElementById("fileElem"); 

    fileSelect.addEventListener("click", function (e) { 

     if (fileElem) { 
      fileElem.click(); 
     } 

     e.preventDefault(); 
    }, false); 

    function handleFiles(files) { 
     console.log(files); 
    } 

</script> 

Trả lời

12

Theo File Api W3 Dự thảo các loại attributte:

Chuỗi ASCII mã hóa trong trường hợp thấp hơn đại diện cho các loại phương tiện truyền thông của the Blob, thể hiện dưới dạng loại MIME RFC2046 [RFC2046]. Khi nhận được, tuân thủ các tác nhân người dùng NÊN trả lại loại MIME của Blob, nếu nó được biết là . Nếu các tác nhân người dùng phù hợp không thể xác định loại phương tiện của Blob, chúng PHẢI trả về chuỗi rỗng. Một chuỗi là một giá trị MIME loại nếu nó phù hợp với phương tiện truyền thông kiểu dấu hiệu quy định tại mục 3.7 "Truyền thông loại" của RFC 2616

Vì vậy, về cơ bản, nếu nó không phải là một loại phương tiện truyền thông hợp lệ hoặc HTTP/1.1 nó sẽ trống. Dù sao.

Yeah, bạn nên làm một cái gì đó như:

if(type === "") { 
    //Get extension and match to a MIME-types list. (http://www.htmlquick.com/es/reference/mime-types.html) 
} 
+0

đây là danh sách loại mime hữu ích và được giữ nguyên. https://github.com/stretchr/filetypes.js – netalex

+0

[Danh sách loại MIME] (http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) từ svn.apache.org. Xem [Nhận xét tài liệu PHP] (http://php.net/manual/en/function.mime-content-type.php#107798) – Bright

7

đồng ý với câu trả lời được chấp nhận, nhưng như một FYI với ai đó (như tôi), những người đã bị mắc kẹt như tại sao điều này đã xảy ra đối với một số và không phải người khác cho các loại tệp cụ thể, lưu ý rằng trong Windows, nếu mime không được đặt thích hợp trong sổ đăng ký người dùng, bạn sẽ nhận được chuỗi rỗng. Đó là một vài giờ vui vẻ :)

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