Gibt es eine Möglichkeit, den MIME-Typ (oder heißt er "Content-Type"?) Einer Datei in einem Linux-Bash-Skript herauszufinden?
Der Grund, warum ich es brauche, ist, dass ImageShack es anscheinend zum Hochladen einer Datei benötigt, da es aus irgendeinem Grund die PNG-Datei als application/octet-stream
- Datei erkennt.
Ich habe die Datei überprüft und es handelt sich wirklich um ein PNG-Bild:
$ cat /1.png
?PNG
(with a heap load of random characters)
Dies gibt mir den Fehler:
$ 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>
Das funktioniert, aber ich muss einen MIME-TYPE angeben.
$ curl -F "[email protected]/1.png;type=image/png" http://www.imageshack.us/upload_api.php
Verwenden Sie file
. Beispiele:
> 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
eines der anderen Tools (neben der Datei), die Sie verwenden können, ist xdg-mime
z.B xdg-mime query filetype <file>
wenn du lecker hast,
yum install xdg-utils.noarch
Ein beispielhafter Vergleich von xdg-mime und file in einer Subrip-Datei (Untertitel)
$ xdg-mime query filetype subtitles.srt
application/x-subrip
$ file --mime-type subtitles.srt
subtitles.srt: text/plain
in der obigen Datei nur als Klartext anzeigen.
Dateiversion <5: Datei -i -b/Pfad/zu/Datei
Dateiversion> = 5: Datei - MIME-Typ -b/Pfad/zu/Datei
Versuchen Sie den Befehl file
mit -i
Möglichkeit.
-i
Option Veranlasst den Befehl file, Zeichenfolgen vom Typ MIME auszugeben, anstatt die herkömmlicheren, für Menschen lesbaren. So kann es sagen text/plain; charset=us-ascii
eher, als ASCII text
.
datei --mime funktioniert, aber nicht --mime-type. Zumindest für meinen RHEL 5.