Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> upload skalowanego pliku i odczyt rozmiaru przed wysłaniem na serwer
tish83
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.08.2009

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


Czy istnieje możliwość odczytania wielkości przeskalowanego pliku zanim zostanie on zapisany na serwerze? ew. jakiś zapis w pamięci tymczasowej?
mój kod:
  1. function CreateImageJPG($new_width, $new_height, $src, $path, $file, $quality)
  2. {
  3. $tmp_image=imagecreatefromjpeg($src);
  4. $width = imagesx($tmp_image);
  5. $height = imagesy($tmp_image);
  6. $new_image = imagecreatetruecolor($new_width,$new_height);
  7. imagecopyresized($new_image, $tmp_image,0,0,0,0, $new_width, $new_height, $width, $height);
  8. imagejpeg($new_image, $path.$file, $quality);
  9. }
  10.  
  11. function scaleh($width, $height, $new_width)
  12. {
  13. if ($new_width>$width)
  14. {
  15. return ($height);
  16. }
  17. else
  18. {
  19. $new_height=$new_width/$width*$height;
  20. return($new_height);
  21. }
  22. return ($height);
  23. }
  24. function scalew($width, $height, $new_height)
  25. {
  26. if ($new_height>$height)
  27. {
  28. return ($width);
  29. }
  30. else
  31. {
  32. $new_width=$new_height/$height*$width;
  33. return($new_width);
  34. }
  35. return ($width);
  36. }
  37.  
  38.  
  39. if (is_uploaded_file($_FILES['obraz1']['tmp_name']))
  40. {
  41. $src=$_FILES['obraz1']['tmp_name'];
  42. $path1='photos/maxi/';
  43. $path2='photos/mini/';
  44. $a=getimagesize($_FILES['obraz1']['tmp_name']);
  45. $maxphotouserid=$DB->GetOne("SELECT MAX(id) FROM zdjecia_klasa WHERE userid='".$_GET['userid']."'");
  46. mysql_query("INSERT INTO zdjecia_klasa (plik, rok_u, profilid, klasaid, userid) VALUES ('', '', '', '', '".$_GET['userid']."')");
  47. $maxphotoid=mysql_insert_id();
  48.  
  49.  
  50. $t=strtolower(substr($_FILES['obraz1']['name'], -3));
  51. if ($t=="jpg" || $t=="gif" || $t=="bmp" || $t=="png")
  52. {
  53.  
  54. $new_height1=480;
  55. $new_width1=scalew($a[0], $a[1], $new_height1);
  56.  
  57. $new_height3=120;
  58. $new_width3=scalew($a[0], $a[1], $new_height3);
  59.  
  60. $file='klasa_'.$_GET['userid'].'_'.$maxphotoid.'_'.$_FILES['obraz1']['name'];
  61.  
  62. $quality1=75;
  63. $quality3=75;
  64.  
  65. if ($t=="jpg")
  66. {
  67. CreateImageJPG($new_width1, $new_height1, $src, $path1, $file, $quality1);
  68. CreateImageJPG($new_width3, $new_height3, $src, $path2, $file, $quality3);
  69. }
  70.  
  71.  
  72. $dane=$DB->GetRow("SELECT * FROM dziennik WHERE userid='".$_GET['userid']."'");
  73. mysql_query("UPDATE zdjecia_klasa SET plik='".$file."', rok_u='".$dane['rok_u']."', profilid='".$dane['profilid']."', klasaid='".$dane['klasaid']."', userid='".$_GET['userid']."' WHERE id='".$maxphotoid."'");
  74.  
  75. echo 'zdjęcie zostało wgrane :)<br>'.$file;
  76. }
  77. else
  78. {
  79. echo 'nieobslugiwany format pliku '.substr($_FILES['obraz1']['name'], -3);
  80. }
  81. }
  82.  


zdjęcie po zeskalowaniu znacznie się zmniejsza, a max ilość miejsca na galerię dla jednego użytkownika to 10MB. Chciałabym odczytać wielkość pliku po zeskalowaniu, żeby uniknąć sytuacji, że plik wysyłany jest na serwer, po czym dopiero sprawdza ile w sumie zdjęcia zajmuja miejsca i w razie prekroczenia go trzeba usuwać wgrany plik i dane z bazy - za duże obciążenie dla strony...
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 24.08.2025 - 15:27