[PHP] mimetype ophalen van bestand op server

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ieperlingetje
  • Registratie: September 2007
  • Niet online
Ik wil mijn site wat bandbreedte laten besparen door gzip te gebruiken. Nu heeft mijn hosting provider dit niet in apache aangezet, en moet ik dus wat met php gaan klooien. Nu laat ik dus een php script een bestand uitlezen en de gzipped versie terug sturen. Echter wil ik ook het juiste mimetype, en daar zit het probleem: Enigste functies die ik gevonden heb zijn mime_content_type en finfo. Nu worden deze beide niet ondersteund door mijn provider en kan ik niet de correcte mimetype ophalen. O ja, ook get_headers kan een mime type ophalen, maar dan zit ik weer met een HTTP request en is mijn tijdswinst weg. ;). Iemand nog een idee hoe ik het juiste mimetype ophaal met een functie die wel werkt?

Tijdmachine | Nieuws trends


Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 16-09 12:57
Ik weet dat je host het uit heeft gezet, maar ik zou toch maar eens gaan zeuren dat ze het wel aan zetten. Gzip compressie lijkt me toch wel handig om aan te hebben staan...

Qua functies in PHP moet je eens kijken naar fileinfo (zoals PHP.net zelf aangeeft, is deze beter dan mime_content_type (deze laatste is ook deprecated)).

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 21:34

MueR

Admin Tweakers Discord

is niet lief

Tja, als je hoster geen mime_content_type of finfo ondersteunt (wat vreemd overigens, welke PHP versie?) wordt het lastig. Waar gaat het om? Een eigen set bestanden (CSS etc) die je onder controle hebt? Dan zou je kunnen kiezen om de minder nette en veilige manier te gebruiken: kijken naar de extensie van het bestand.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • ieperlingetje
  • Registratie: September 2007
  • Niet online
ik draai PHP versie 5.2.12 . Heb contact opgenomen met de support en ze zeggen dat ze het misschien in de toekomst zullen toepassen. En de enigste mogelijkheid is dus inderdaad de bestandsextensie uitlezen en het gepaste mimetype versturen.

Tijdmachine | Nieuws trends


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 22:06

Saven

Administrator

Mag ik vragen waarom je per se de mime type terug wil sturen? Dat ziet de browser toch automatisch al als ie het unzipt zegmaar.
En anders kun je dacht ik gewoon een header meegeven.

Verder is het slechts een kwestie van ob_start("ob_gzhandler"); bovenaan en ob_end_flush(); onderaan.

correct me if i'm wrong :P

Acties:
  • 0 Henk 'm!

  • ieperlingetje
  • Registratie: September 2007
  • Niet online
mimetype wordt niet meegestuurd als ik iets via php genereer , ik krijg steeds text/html als ik het niet expliciet opgeef.

Tijdmachine | Nieuws trends


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
ook get_headers kan een mime type ophalen, maar dan zit ik weer met een HTTP request en is mijn tijdswinst weg
Het resultaat is cachebaar.
Je kunt ook kijken of je wat kunt met shell-commands; zie man file bijvoorbeeld.

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Nu weet ik niet wat de toepassing van dit alles is, maar je zou kunnen overwegen om de gebruiker het bestand (geforceerd) te laten downloaden. In dit geval zou je niet de mime van het bestand te weten hoeven komen. Wanneer de gebruiker vervolgens het bestand probeerd te openen, dan zal er simpelweg een downloadvenster te voorschijn komen. Eenmaal het bestand op de computer van de client staat, dan kan het OS zelf het mime uitlezen.

PHP:
1
2
header('Content-Type: application/force-download');
// En vervolgens raw data, eventueel in combinatie met andere headers

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Het nut lijkt me trouwens vrij beperkt; plaatjes zijn niet comprimeerbaar, en voor je php-scripts kun je al de output buffer gebruiken. Alleen voor JavaScript kun je nog wel winst boeken.
Pagina: 1