Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Определение MIME type (content type) (https://javascript.ru/forum/events/35683-opredelenie-mime-type-content-type.html)

selahssea 18.02.2013 16:58

Определение MIME type (content type)
 
Есть простейший скрипт который показывает тип файла выбранного в input:file
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  <script type='text/javascript' src='//code.jquery.com/jquery-1.9.1.js'></script>
<script type='text/javascript'>

$(window).load(function(){
  $("a").on("click", function(){
    alert(document.getElementById('fileChooserID').files[0].type)
  })
});

</script>
</head>
<body>
  <input type="file" name="" id="fileChooserID">
  <a href="#">Click</a>  
</body>
</html>


Живой пример: http://jsfiddle.net/Xm2AN/2/

Но, например, для файлов .psd и .cdr тип файла отсутствует, причем отсутствует только на винде (проверялось в Windows 7 Chrome 25, и Mac OS X Mountain Lion 10.8 Chrome на одинаковых файлах).

Кто сталкивался с подобной проблемой, подскажите, пожалуйста, как определить MIME type таких файлов? Спасибо.

danik.js 18.02.2013 17:41

Как вариант, попробовать прочитать часть файла через FileReader и попытаться определить что перед нами - psd или нет.

selahssea 18.02.2013 20:58

а с чем вообще может быть связана подобная невозможность определить тип?

nerv_ 18.02.2013 21:10

Цитата:

Сообщение от danik.js
Как вариант, попробовать прочитать часть файла через FileReader

что это даст?

миме тип вот он
Цитата:

Сообщение от selahssea
document.getElementById('fileChooserID').files[0].type


selahssea, возможно, только по расширению файла - пальцем в небо

cyber 18.02.2013 21:14

selahssea, не только эти 2 формата, а как я понял много не стандартных форматов не определяет..

danik.js 18.02.2013 21:26

Не знаю. В реестре вроде contentType прописан корректно - image/photoshop. Почему так происходит - непонятно. Кстати, нельзя ли простро проверять расширение файла? Для этого даже сойдет input.value, правда только для одного файла.

danik.js 18.02.2013 21:28

Цитата:

Сообщение от nerv_
что это даст?

Поможет определить реальный контент. Хотя да, проверки расширения файла думаю с головой хватит )

cyber 18.02.2013 21:34

danik.js, меня тоже посетила мысль сделать что типо словаря, для нужны форматов, хотя все таки причина интересна почему так, завтра поищу ответ.

selahssea 19.02.2013 18:38

Цитата:

Сообщение от danik.js (Сообщение 235383)
Кстати, нельзя ли простро проверять расширение файла?

Просто по расширению файла вроде бы не особо безопасно.

danik.js 19.02.2013 18:42

selahssea, а от кого и от чего вы защищаетесь? Так или иначе все, что происходит на клиенте - не безопасно :)


Часовой пояс GMT +3, время: 02:21.