Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Upload Plików
Forum PHP.pl > Forum > Przedszkole
krzychu0808
Witam.... zrobiłem prosty upload plików i chcę aby można było tylko uploadować pliki o rozmiarach 50x50 jak to zrobić questionmark.gifquestionmark.gif
Upload:
  1. <?php
  2. ?>
  3. upload to: $archive_dir = "./mini";
  4. function upload_file() {
  5.    global $userfile, $userfile_name, $userfile_size, $userfile_type,  $archive_dir, $WINDIR, $_FILES;
  6.    if(isset($WINDIR)) $userfile = str_replace("\","\", $userfile);
  7.  
  8.    
  9.    $filename = basename($userfile_name);
  10.    $filename = strtolower($filename);
  11. $filename = str_replace("ż","z",$filename);
  12. $filename = str_replace("ź","z",$filename);
  13. $filename = str_replace("ą","a",$filename);
  14. $filename = str_replace("ó","o",$filename);
  15. $filename = str_replace("ś","s",$filename);
  16. $filename = str_replace("ń","n",$filename);
  17. $filename = str_replace("ł","l",$filename);
  18. $filename = str_replace("ę","e",$filename);
  19. $filename = str_replace("ć","c",$filename);
  20. $filename = str_replace(" ","",$filename);
  21. if($userfile_size <= 0) die ("$filename jest pusty.");
  22.    if($userfile_size >= 600000) die ("$filename jest za duży wielkość maksymalna to 500kb.<br/><br/><br/>");
  23.    if(!@copy($userfile, "$archive_dir/$filename")) die("Nie mogę skopiować $userfile_name na $filename.");
  24.    if(!isset($WINDIR) && !@unlink($userfile)) die ("Nie mogę skasować $userfile_name.");
  25.    echo "Udane Przesyłanie $filename<br/>";
  26.  
  27. }
  28. if($upload == 'upload') upload_file();    
  29. }
  30.    ?>
nospor
http://pl.php.net/manual/pl/function.getimagesize.php
zanim przeniesiesz plik z tmp (przed move_uploaded_file() u ciebie z jakiegos dziwnego powodu copy()) sprawdzasz wymiary obrazka i jak sa zle to walisz bledem
Misio311
A żeby było trochę łatwiej smile.gif

  1. <?php
  2. $rozmiar = getimagesize($filename);
  3.    $w = $rozmiar[0]; // Pobiera wysokość
  4.    $h = $rozmiar[1]; // Pobiera szerokość
  5. ?>

A pozatym po co Ci tyle tych "str_replace" Nie prościej będzie tak ? -- >>
  1. <?php
  2. $filename = strtr($filename, "ąćęłńóśźżĄĆĘŁŃÓŚŹŻ", "acelnoszzACELNOSZZ");
  3. ?>


Pozdrawiam...


// Nie nabijam postów :-p Po prostu się udzielam oraz daję radę jak zastąpić powtarzające się "str_replace".
nospor
@misio za nabijanie postow u nas dostaje sie ostrzezenia
Kolega dostal linka do manuala i tam bylo wszystko ladnie wyjasnione, nie trzeba wklejac kodu z manuala!

zmien sygnature na zgodną z regulaminem
krzychu0808
zrobiłem tak:
  1. <?
  2. $archive_dir = "./mini";
  3. function upload_file() {
  4.    global $userfile, $userfile_name, $userfile_size, $userfile_type,  $archive_dir, $WINDIR, $_FILES;
  5.    if(isset($WINDIR)) $userfile = str_replace("\","&#092;", $userfile);
  6.    
  7. $filename = basename($userfile_name);
  8. $filename = strtolower($filename);
  9. $filename = str_replace("ż","z",$filename);
  10. $filename = str_replace("ź","z",$filename);
  11. $filename = str_replace("ą","a",$filename);
  12. $filename = str_replace("ó","o",$filename);
  13. $filename = str_replace("ś","s",$filename);
  14. $filename = str_replace("ń","n",$filename);
  15. $filename = str_replace("ł","l",$filename);
  16. $filename = str_replace("ę","e",$filename);
  17. $filename = str_replace("ć","c",$filename);
  18. $filename = str_replace(" ","",$filename);
  19. $filename = str_replace("JPG","jpg",$filename);
  20. if($userfile_size <= 0) die ("$filename jest pusty.");
  21. $extension = split("[.]", $filename);
  22. $typ = $extension[count($extension)-1];
  23. if ($typ!="jpg") {echo "Zły Format Pliku. Tylko .jpg";}
  24. else {
  25. $rozmiar = getimagesize($filename);
  26.   $w = $size[0]; // Pobiera wysokość
  27.   $h = $size[1]; // Pobiera szerokość
  28. if ($w!=50 and $h!=50) {echo "Zły rozmiar miniaturki. Dopuszczalny rozmiar to 50x50";}
  29. else {
  30.    if($userfile_size >= 600000) die ("$filename jest za duży wielkość maksymalna to 500kb.<br/><br/><br/>");
  31.    if(!@copy($userfile, "$archive_dir/$filename")) die("Nie mogę skopiować $userfile_name na $filename.");
  32.    if(!isset($WINDIR) && !@unlink($userfile)) die ("Nie mogę skasować $userfile_name.");
  33.  
  34.    echo "Udane Przesyłanie $filename<br/>";
  35. }
  36. }
  37. }
  38. if($upload == 'upload') upload_file();    
  39. }
  40.    ?>

i on nie widzi pliku bo ten plik jest zapisany w plikach tym czasowych jak zrobić aby on sobie z plików tymczasowych odczytał plik questionmark.gifquestionmark.gif
Misio311
Jak to jest w plikach tymczasowych ? Nie uploadujesz plików przez formularz ? skąd pobierasz "userfile_name" ?

P.s

Popraw
  1. $rozmiar = getimagesize($filename);
  2. $w = $rozmiar[0]; // Pobiera wysokość
  3. $h = $rozmiar[1]; // Pobiera szerokość
krzychu0808
z grubsza kodu
  1. <form method="POST" enctype="multipart/form-data"
  2.    action="miniaturka,<?echo $tutorial[id];?>.html">
  3.    <input type="hidden" name="upload" value="upload">
  4.    Miniaturka:
  5.    <input type="file" name="userfile">
  6.    <br/><br/>
  7.    <input type="submit" value="Prześlij">
  8.    </form>
  9. <?
  10. $archive_dir = "./mini";
  11. function upload_file() {
  12.    global $userfile, $userfile_name, $userfile_size, $userfile_type,  $archive_dir, $WINDIR, $_FILES;
  13.    if(isset($WINDIR)) $userfile = str_replace("\","&#092;", $userfile);
  14.    
  15. $filename = basename($userfile_name);
  16. $filename = strtolower($filename);
  17. $filename = str_replace("ż","z",$filename);
  18. $filename = str_replace("ź","z",$filename);
  19. $filename = str_replace("ą","a",$filename);
  20. $filename = str_replace("ó","o",$filename);
  21. $filename = str_replace("ś","s",$filename);
  22. $filename = str_replace("ń","n",$filename);
  23. $filename = str_replace("ł","l",$filename);
  24. $filename = str_replace("ę","e",$filename);
  25. $filename = str_replace("ć","c",$filename);
  26. $filename = str_replace(" ","",$filename);
  27. $filename = str_replace("JPG","jpg",$filename);
  28. if($userfile_size <= 0) die ("$filename jest pusty.");
  29. $extension = split("[.]", $filename);
  30. $typ = $extension[count($extension)-1];
  31. if ($typ!="jpg") {echo "Zły Format Pliku. Tylko .jpg";}
  32. else {
  33. $rozmiar = getimagesize("$userfile_name");
  34.   $w = $rozmiar[0]; // Pobiera wysokość
  35.   $h = $rozmiar[1]; // Pobiera szerokość
  36. if ($w!=50 and $h!=50) {echo "Zły rozmiar miniaturki. Dopuszczalny rozmiar to 50x50";}
  37. else {
  38.    if($userfile_size >= 600000) die ("$filename jest za duży wielkość maksymalna to 500kb.<br/><br/><br/>");
  39.    if(!@copy($userfile, "$archive_dir/$filename")) die("Nie mogę skopiować $userfile_name na $filename.");
  40.    if(!isset($WINDIR) && !@unlink($userfile)) die ("Nie mogę skasować $userfile_name.");
  41.  
  42.    echo "Udane Przesyłanie $filename<br/>";
  43. }
  44. }
  45. }
  46. if($upload == 'upload') upload_file();    
  47. }
  48.    ?>

i "./mini" to jest folder docelowy a ja chcę żeby zanim skopiuje plik do tego folderu sprawdził to....
dostaje komunikat : Warning: getimagesize(mini.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home/................
Misio311
  1. <form method="POST" enctype="multipart/form-data" action="index.php">
  2. <input type="hidden" name="upload" value="upload">
  3. Miniaturka:
  4. <input type="file" name="plik">
  5. <br/><br/>
  6. <input type="submit" value="Prześlij">
  7. </form>
  8.  
  9.  
  10. <?
  11. if($upload == 'upload') {
  12. $plik_tmp = $_FILES['plik']['tmp_name'];
  13. $plik_nazwa = $_FILES['plik']['name'];
  14. $plik_rozmiar = $_FILES['plik']['size'];
  15. $plik_nazwa = strtr($plik_nazwa, "ąćęłńóśźżĄĆĘŁŃÓŚŹŻ", "acelnoszzACELNOSZZ");
  16. $info = pathinfo($plik_nazwa);
  17. $rozmiar = getimagesize($plik);
  18. $w = $rozmiar[0]; // Pobiera wysokość
  19. $h = $rozmiar[1]; // Pobiera szerokość
  20. if($info['extension'] == 'jpg')
  21. if($plik_rozmiar >= 512000)
  22. die ("$plik_nazwa, jest za duży wielkość maksymalna to 500kb.<br/><br/><br/>");
  23. if($w == 50 and $h == 50) {
  24.  
  25. if(is_uploaded_file($plik_tmp)) {
  26.    move_uploaded_file( $plik_tmp, "mini/$plik_nazwa");
  27.    echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  28.    <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  29. } else {
  30. echo "Nie udało się wysłać pliku <strong>$plik_nazwa</strong> na serwer";
  31. }
  32. } else {
  33. print"Zły rozmiar miniaturki. Dopuszczalny rozmiar to 50x50. <br><br>";
  34. } }
  35. ?>


Dokładniej o taki efekt chodziło questionmark.gif?
krzychu0808
Ok już sobie poradziłem ze wszystkim... wielkie dzięki...




właśnie o taki efekt mi chodziło... tylko że jak wrzucę plik xxx.gif to mi go wrzuca tongue.gif
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.