Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> mime type
andrzejb
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 1
Dołączył: 12.08.2005

Ostrzeżenie: (10%)
X----


  1. <?php
  2. // sprawdzamy format pliku
  3. function format($dir){
  4. switch(mime_content_type($dir)){
  5. //typ pliku 1-obrazy 2-video 3-dzwiek
  6. case "image/pjpeg";
  7. $p['typ']="1";
  8. $p['ext']=".jpg";
  9. return $p;
  10. break;
  11. case "image/jpg";
  12. $p['typ']="1";
  13. $p['ext']=".jpg";
  14. return $p;
  15. break;
  16. case "image/jpeg";
  17. $p['typ']="1";
  18. $p['ext']=".jpg";
  19. return $p;
  20. break;
  21. case "image/gif";
  22. $p['typ']="1";
  23. $p['ext']=".gif";
  24. return $p;
  25. break;
  26. case "image/x-png";
  27. $p['typ']="1";
  28. $p['ext']=".png";
  29. return $p;
  30. break;
  31. case "image/png";
  32. $p['typ']="1";
  33. $p['ext']=".png";
  34. return $p;
  35. break;
  36. case "audio/mpeg";
  37. $p['typ']="3";
  38. $p['ext']=".mp3";
  39. return $p;
  40. break;
  41. case "image/tiff";
  42. $p['typ']="1";
  43. $p['ext']=".tif";
  44. return $p;
  45. break;
  46. default: return 0;
  47. }
  48. }
  49. ?>


Napisalem sobie funkcje do sprawdzenia formatu zapisanego pliku. Można ją jakoś zoptymalizwoać ?


~mike_mech


--------------------
web lowcy.com.pl gg 1675677
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Tak. O tak:
  1. <?php
  2. function format($file)
  3. {
  4. $mimeType = mime_content_type($file);
  5. $mimes = array();
  6. $mimes[ 'image/pjpeg' ] = array( 'typ' => '1', 'ext' => '.jpg' );
  7. $mimes[ 'image/jpg' ] = array( 'typ' => '1', 'ext' => '.jpg' );
  8. // itd...
  9.  
  10. if ( array_key_exists( $mimeType, $mimes ) )
  11.  {
  12. return $mimes[ $mimeType ];
  13. }
  14. else
  15. {
  16.  return FALSE; // lub zero, lub tablice z domyslnymi wartosciami
  17.  }
  18. }
  19.  
  20. ?>

^^ Po to wlasnie sa tablice, a nie switch.

  1. <?php
  2. case "image/pjpeg";
  3. $p['typ']="1";
  4. $p['ext']=".jpg";
  5. return $p;
  6. break;
  7. ?>

zamienia na 1 linijke + kilka wspolnych linijek.
Poza tym kod jest czytelniejszy, a switha uzywa sie gdy w zaleznosci od mimeType wykonywalbys ROZNE dzialania/obliczenia (a nie jak tu identyczne).


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


A ja proponuję tak, podobnie troche jak wyżej:
  1. <?php
  2.  
  3. function GetExtension( $strPath )
  4. {
  5. return strtolower( end( explode( ".", basename( $strPath ) ) ) );
  6. }
  7.  
  8. function format( $strFile )
  9. {
  10. $strMime = mime_content_type( $strFile );
  11.  
  12. $arrTypes = array( 'image/pjpeg' => 1, 'image/jpg' => 1 , 'image/jpeg' => 1 , 'i tak dalej');
  13.  
  14. $arrTemp = array();
  15. $arrTemp[ 'type' ] = 'unknown';
  16.  
  17. if( in_array( $strMime, $arrPictures )
  18. {
  19. $arrTemp[ 'type' ] = $arrTypes[ $strMime ];
  20. }
  21.  
  22. $arrTemp[ 'ext' ] = GetExtension( $strFile );
  23.  
  24. return $arrTemp;
  25. }
  26.  
  27. ?>
Go to the top of the page
+Quote Post
andrzejb
post
Post #4





Grupa: Zarejestrowani
Postów: 93
Pomógł: 1
Dołączył: 12.08.2005

Ostrzeżenie: (10%)
X----


właśnie o takim czymś myślałem smile.gif w 2gim przykladzie
Cytat
  1. <?php
  2.  
  3. function GetExtension( $strPath )
  4. {
  5. return strtolower( end( explode( ".", basename( $strPath ) ) ) );
  6. }
  7. ?>

wydaje mi sie ze poprawniejsze jest rozpoznawanie rozszerzenia po mime a nie na odwrot.

Po drodze napotkałem problem
brak funkkcji mime_content_type szkorzystałem z zamiennika
  1. <?php
  2.  
  3. if (!function_exists('mime_content_type')) {
  4.    function mime_content_type($f) {
  5.        $f = escapeshellarg($f);
  6.        return trim( `file -bi $f);
  7.    }
  8. }
  9.  
  10. ?>

dziala fajnie tylko pliki 3gp na ktorych mi zalezy rozpoznaje jako app'likacje
Kod
pliki.php text/plain; charset=us-ascii
pliki.php.bak text/plain; charset=us-ascii
Sahara.2005.PL.DVDRiP.XViD-DvF.torrent application/octet-stream
Mielno(01).jpg image/jpeg
Video(01).3gp application/octet-stream
Video(04).3gp application/octet-stream
Half-Life_Keygen.zip application/x-zip


Ten post edytował andrzejb 23.10.2005, 16:17:19


--------------------
web lowcy.com.pl gg 1675677
Go to the top of the page
+Quote Post
widmo17
post
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 3
Dołączył: 17.03.2008
Skąd: niekąd

Ostrzeżenie: (0%)
-----


Cytat
wydaje mi sie ze poprawniejsze jest rozpoznawanie rozszerzenia po mime a nie na odwrot.

Taa, ale niespecjalnie bezpieczne :]


--------------------
"Lecz nikt nie może tracić z oczu tego, czego pragnie. Nawet kiedy przychodzą chwile, gdy zdaje się, że świat i inni są silniejsi. Sekret tkwi w tym, by się nie poddać."
www.widmo.tk - zapraszam na mój homepage ;>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 22:10