Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Upload Plików
krzychu0808
post 21.10.2008, 22:08:21
Post #1





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

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


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.    ?>


Ten post edytował krzychu0808 21.10.2008, 22:39:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
nospor
post 21.10.2008, 22:10:50
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Misio311
post 21.10.2008, 22:39:34
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 2
Dołączył: 15.08.2006
Skąd: ZmC

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


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".

Ten post edytował Misio311 21.10.2008, 23:12:16
Go to the top of the page
+Quote Post
nospor
post 21.10.2008, 22:41:12
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
krzychu0808
post 21.10.2008, 23:04:31
Post #5





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

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


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
Go to the top of the page
+Quote Post
Misio311
post 21.10.2008, 23:09:43
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 2
Dołączył: 15.08.2006
Skąd: ZmC

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


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ść


Ten post edytował Misio311 21.10.2008, 23:12:44
Go to the top of the page
+Quote Post
krzychu0808
post 21.10.2008, 23:11:51
Post #7





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

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


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/................

Ten post edytował krzychu0808 21.10.2008, 23:29:24
Go to the top of the page
+Quote Post
Misio311
post 21.10.2008, 23:57:22
Post #8





Grupa: Zarejestrowani
Postów: 21
Pomógł: 2
Dołączył: 15.08.2006
Skąd: ZmC

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


  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?

Ten post edytował Misio311 21.10.2008, 23:58:07
Go to the top of the page
+Quote Post
krzychu0808
post 22.10.2008, 07:41:58
Post #9





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

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


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

Ten post edytował krzychu0808 22.10.2008, 08:38:30
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:50