Làm cách nào để tìm ra kiểu MIME của tệp (Loại-Nội dung)?


107

Có cách nào để tìm ra kiểu MIME (hoặc nó được gọi là "Loại-Nội dung"?) Của một tệp trong tập lệnh bash Linux không?

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

Tôi đã kiểm tra tệp và nó thực sự là một hình ảnh PNG:

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

Điều này mang lại cho tôi lỗi:

$ curl -F "fileupload=@/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>

Điều này hoạt động, nhưng tôi cần chỉ định LOẠI MIME.

$ curl -F "fileupload=@/1.png;type=image/png" http://www.imageshack.us/upload_api.php

Câu trả lời:


228

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

Không nếu bạn sử dụng Git bash dưới cửa sổ.
tivo

1
Để chỉ có thể loại kịch câm bạn có thể làm:file --mime-type FILE_NAME | awk '{print $2}'
Justin Jenkins

23
@JustinJenkins -b bỏ qua tên tập tin nên file -b --mime-type FILE_NAMElợi nhuận chỉ là loại mime
jaygooby

hoặckmimetypefinder filename
cắnk

Không nhận ra application/xmlhoặctext/xml
Tseng

24

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

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

nếu bạn có bạn,

yum install xdg-utils.noarch

Một ví dụ so sánh giữa xdg-mime và tệp trên tệp Subrip (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ị nó dưới dạng văn bản thuần túy.


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

xdg-mime là một tập lệnh bash dựa rất nhiều vào các biến môi trường. Một số trong số chúng, ví dụ như DE không được đặt nếu bạn chưa đăng nhập vào một phiên. Hãy tự mình kiểm tra$ less $(which xdg-mime)
ManuelSchneid3r

10

phiên bản tệp <5: tệp -i -b / đường dẫn / to /
tệp phiên bản tệp> = 5: tệp --mime-type -b / path / to / tệp


1
ý bạn là gì theo phiên bản tệp?
user2867106

1
@ user2867106 Tôi nghĩ ý của anh ấy là phiên bản của lệnh tệp.
jgh fun-run

4

Hãy thử filelệnh với -itùy chọn.

-iTùy chọn Làm cho lệnh tệp xuất ra các chuỗi kiểu mime thay vì các chuỗi kiểu truyền thống mà con người có thể đọc được. Vì vậy, nó có thể nói text/plain; charset=us-asciihơn là ASCII text.


2

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.