Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generowanie i zmiana nazwy pliku
Forum PHP.pl > Forum > PHP
My4tic
Uzytkownicy serwisu muszą uploadować zdjęcia, które pozniej są w nim wyświetlane.

Mam skrypt:

  1. <?php 
  2. //Sprawdzamy czy plik został wysłany 
  3. if(!is_uploaded_file($_FILES[plik][tmp_name])){ 
  4. echo &#092;"Musisz wybrać jakiś plik. 
  5. &#092;"; 
  6. exit;} 
  7. //Sprawdzamy czy nie ma błędów 
  8. if($_FILES[plik][error] != 0){ 
  9. echo &#092;"Wystąpił błąd podczas przesyłania pliku! 
  10. Sprawdź czy plik posiada odpowiednią wagę i spróbuj ponownie! 
  11. &#092;"; 
  12. exit;} 
  13. //Sprawdzamy MIME TYPE pliku 
  14. if($_FILES[plik][type] == &#092;"image/pjpeg\" || 
  15. $_FILES[plik][type] == &#092;"image/png\" || 
  16. $_FILES[plik][type] == &#092;"image/gif\"){ 
  17. // UPLOAD 
  18. if(move_uploaded_file($_FILES[plik][tmp_name], &#092;"./upload/\".$_FILES[plik][name])){ 
  19. echo &#092;"Plik wrzucono pomyślnie! 
  20. &#092;"; 
  21. exit; 
  22. }else{ 
  23. echo &#092;"Wystąpił nieoczekiwany błąd podczas kopiowania! 
  24. &#092;"; 
  25. exit; 
  26. } 
  27. }else{ 
  28. echo &#092;"Możesz uploadować tylko obrazki! 
  29. &#092;"; 
  30. exit; 
  31. } 
  32. ?>


W takim przypadku moze sie zdarzyć ze na serwerze bedzie juz plik o takiej nazwie jak ten co ma być dopiero wrzucony. Jesli php zmienia podczas uploadu pliku nazwe to jak ją pozniej odczytać a jesli nie to jak ją zmienić?

Najlepiej zeby to wyglądało np.: e3ek2k3ka.jpg

aa... i jeszcze jedno... czy mozna zmienić "w locie" rozmiar obrazka? Tak zeby pozniej nie skalować go przez width i hight ?

Pzdr
zombie
możesz nadawać im nazwy
  1. <?php
  2. date(&#092;"U\").rand(0,99);
  3. ?>
wtedy ryzyko powtórzenia nazwy jest baaardzo niewielkie, ale zawsze lepiej się upewnić przez np. file_exists()

funkcja do zmiany rozmiarów:
  1. <?php
  2. function ResizeImage($im,$maxwidth,$maxheight,$name){
  3. $width = imagesx($im);
  4. $height = imagesy($im);
  5. if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
  6. if($maxwidth && $width > $maxwidth){
  7. $widthratio = $maxwidth/$width;
  8. $RESIZEWIDTH=true;
  9. }
  10. if($maxheight && $height > $maxheight){
  11. $heightratio = $maxheight/$height;
  12. $RESIZEHEIGHT=true;
  13. }
  14. if($RESIZEWIDTH && $RESIZEHEIGHT){
  15. if($widthratio < $heightratio){
  16. $ratio = $widthratio;
  17. }else{
  18. $ratio = $heightratio;
  19. }
  20. }elseif($RESIZEWIDTH){
  21. $ratio = $widthratio;
  22. }elseif($RESIZEHEIGHT){
  23. $ratio = $heightratio;
  24. }
  25. $newwidth = $width * $ratio;
  26. $newheight = $height * $ratio;
  27. if(function_exists(&#092;"imagecopyresampled\")){
  28. $newim = imagecreatetruecolor($newwidth, $newheight);
  29. imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  30. }else{
  31. $newim = imagecreate($newwidth, $newheight);
  32. imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  33. }
  34. ImageJpeg ($newim,$name . &#092;".jpg\");
  35. ImageDestroy ($newim);
  36. }else{
  37. ImageJpeg ($im,$name . &#092;".jpg\");
  38. }
  39. }
  40. ?>
My4tic
Hmm... czyli otrzymam liczbe sekund od U + losową liczbe z zakresu, tak?

No to rzeczywiscie ryzyko powtorzenia bedzie niewielkie :-)

A jak teraz zmienić nazwe pliku, który jest uploadowany na tą nową?


----

Dziękuję za pomoc i funkcję :-)
zombie
wszystko masz już w tej funkcji. używasz jej tak:
  1. <?php
  2. if($_FILES['plik']['type'] == &#092;"image/pjpeg\" || $_FILES['plik']['type'] == \"image/jpeg\"){
  3. $im = imagecreatefromjpeg($_FILES['plik']['tmp_name']);
  4. } elseif ($_FILES['plik']['type'] == &#092;"image/x-png\" || $_FILES['plik']['type'] == \"image/png\"){
  5. $im = imagecreatefrompng($_FILES['plik']['tmp_name']);
  6. } elseif ($_FILES['plik']['type'] == &#092;"image/gif\"){
  7. $im = imagecreatefromgif($_FILES['plik']['tmp_name']);
  8. }
  9.  
  10. ResizeImage($im,SZEKOKOSC,WYSOKOSC,SCIEZKA.&#092;"/\".$nowa_nazwa);
  11. ?>

... powinno działać, chociaż nie pamiętam dokładnie, bo to stary skrypcik smile.gif
My4tic
Super :-) Posprawdzam i dam znać jak poszło :-)

Dzięki za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.