2010-02-09 45 views
72

Có cách nào để tìm ra MIME-TYPE (hay nó được gọi là "Kiểu nội dung" ...) của một tệp trong tập lệnh bash linux không?Làm cách nào để tìm ra tệp "loại mime (Loại nội dung?)"?

Lý do tôi cần đó là vì imageshack dường như cần nó để tải lên một tập tin như đối với một số lý do nó phát hiện các tập tin .png như một "application/octet-stream" ...

I'v đã kiểm tra các tập tin , và nó thực sự là một .png

$ cat /1.png 
?PNG 
(with a heap load of random characters) 

này mang lại cho tôi những lỗi:

$ curl -F "[email protected]/1.png" http://www.imageshack.us/upload_api.php 
<links> 
<error id="wrong_file_type">Wrong file type detected for file 1.png:application/octet-stream</error> 
</links> 

này hoạt động, nhưng tôi cần phải xác định một MIME-TYPE.

$ curl -F "[email protected]/1.png;type=image/png" http://www.imageshack.us/upload_api.php 

Trả lời

143

Sử dụng file. Ví dụ:

> file --mime-type image.png 
image.png: image/png 

> file -b --mime-type image.png 
image/png 

> file -i FILE_NAME 
image.png: image/png; charset=binary 
+0

Chúc mừng, "file --mime-type /1.png" hoạt động tuyệt vời! – Mint

+0

Không nếu bạn sử dụng dấu gạch ngang Git dưới cửa sổ. – tivo

+1

Để nhận ** chỉ ** loại mime bạn có thể làm: 'tệp --mime-type FILE_NAME | awk '{print $ 2}' ' –

16

một trong những công cụ khác (ngoài tập tin), bạn có thể sử dụng là xdg-mime

ví dụ xdg-mime query filetype query filetype <file>

nếu bạn có yum,

yum install xdg-utils.noarch

Một ví dụ so sánh của xdg-mime và tệp trên tệp phụ (phụ đề)

$ xdg-mime query filetype subtitles.srt 
application/x-subrip 

$ file --mime-type subtitles.srt 
subtitles.srt: text/plain 

trong tệp ở trên chỉ hiển thị dưới dạng văn bản thuần túy.

+0

xdg-mime truy vấn filetype install.sql; xprop: không thể mở hiển thị '' –

+0

xdg-mime là một tập lệnh bash phụ thuộc rất nhiều vào các biến môi trường. Một số người trong số họ, ví dụ: DE không được thiết lập nếu bạn không đăng nhập vào một phiên. Tự mình kiểm tra '$ less $ (xdg-mime)' – ManuelSchneid3r

1

Hãy thử lệnh file với tùy chọn -i.

-i tùy chọn Gây lệnh tệp để xuất chuỗi loại mime thay vì các chuỗi có thể đọc được truyền thống hơn. Do đó, có thể nói text/plain; charset=us-ascii thay vì ASCII text.

1

tệp --mime hoạt động, nhưng không phải - kiểu -mime. ít nhất là cho RHEL 5.

+0

Điều này cũng hoạt động dưới Linux Mint 12 –

7

phiên bản tập tin < 5 của tôi: tập tin -i -b/path/to/file
tập tin phiên bản> = 5: tập tin --mime kiểu -b/path/đến/file

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