Autor Beitrag
dirkil2
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 130



BeitragVerfasst: Sa 03.01.09 00:48 
Wie kann ich in Delphi den korrekten MIME-Type zu einer Dateierweiterung bestimmen. Also z.B.:

.zip -> application/x-zip-compressed

Sicherlich kann ich eine Liste hinterlegen und diese dann entsprechend abfragen, aber werden die MIME Types nicht irgendwo in der Registry abgelegt? Oder gibt es eine Systemfunktion, die das macht oder eine INDY- oder JEDI-Komponente?

Bin für jeden Tipp dankbar.

Dirk.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 03.01.09 00:51 
Schau dir mal in der Registry den Zweig HKEY_CLASSES_ROOT an ;-).

Da gibt es bei vielen Dateitypen den Wert "Content Type", rate mal was da drin steht. :mrgreen:
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 03.01.09 02:09 
Ich dachte zuerst an so etwas wie "Himmelsrichtung mit dem Kompass bestimmen" (was etwa genauso viel Sinn ergibt, weil die Richtung in die der Kompass zeigt, nicht zwingend Norden sein muss :mrgreen:, aber gut, das ist ein andres Thema) und von daher mal ein kleiner Hinweis, wie man es besser machen kann:

Direkt anhand der Erweiterung auf den Inhalt zu schließen ist zwar theoretisch möglich (wie user profile iconjaenicke schon gesagt hat), Detaillierter sind aber Herangehensweisen wie es etwa file unter Unix macht, was anhand des Inhaltes nähere Details über den Content-Type erfragt\ermittelt.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Sa 03.01.09 02:46 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Direkt anhand der Erweiterung auf den Inhalt zu schließen ist zwar theoretisch möglich (wie user profile iconjaenicke schon gesagt hat), Detaillierter sind aber Herangehensweisen wie es etwa file unter Unix macht, was anhand des Inhaltes nähere Details über den Content-Type erfragt\ermittelt.

Richtig! In unixoiden BS kann man ein Bitmap auch die Dateierweiterung .txt geben, nichts desto trotz wird (meistens) beim öffnen der "Fake.txt" das Bildbearbeitungsprogramm geöffnet. DOS und Windows identifizieren leider einen Dateityp (fast) nur anhand der Dateiendung.
Natürlich kann man von jeder Datei die ersten n Bytes lesen (in der sich hoffentlich eine Art Header befindet) und dadurch auf den Contenttype schließen, nur besitzt nicht jedes Dateiformat ein Header...

_________________
Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 03.01.09 15:47 
Moin!

user profile icondirkil2 hat folgendes geschrieben Zum zitierten Posting springen:
Wie kann ich in Delphi den korrekten MIME-Type zu einer Dateierweiterung bestimmen. [...]Oder gibt es eine Systemfunktion, die das macht oder eine INDY- oder JEDI-Komponente?
Schau mal in die Indy9-HTTPServer-Demo:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  MIMEMap: TIdMIMETable;

function TfmHTTPServerMain.GetMIMEType(sFile: TFileName): String;
begin
  result := MIMEMap.GetFileMIMEType(sFile);
end;
Damit sollte das auch gehen. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 03.01.09 16:00 
Ja, dort sind ca. 150 Typen bereits vordefiniert, und je nach Einstellung wird die Registry ebenfalls ausgelesen. Dabei wird der angesprochene Eintrag in jedem Schlüssel gesucht und ggf. ausgelesen.

Wobei die vordefinierten Typen evtl. ja bereits reichen. ;-)

Hier übrigens die entsprechende Online-Doku:
www.indyproject.org/...le=TIdMimeTable.html