Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Upload plików graficznych.
Forum PHP.pl > Forum > Przedszkole
Gnacio
Witam.

Mam taki skrypt:
index.htm
  1. <FORM ENCTYPE="multipart/form-data" action="upl.php" method=post>
  2. <INPUT TYPE="FILE" NAME="plik" SIZE="50">
  3. <INPUT TYPE="SUBMIT" VALUE="Wgraj">
  4. </form>


I plik upl.php
  1. <?php 
  2. error_reporting(E_ALL);  
  3. if($_FILES) {
  4. $uploaddir = 'katalog/'; 
  5. $path_parts = pathinfo($_FILES['plik']['name']); 
  6. $rozszerzenie = $path_parts['extension']; 
  7. $nazwapliku = time(); 
  8. $nazwapliku .= rand(100000, 999999); 
  9. $nazwapliku .= "." . $rozszerzenie; 
  10. if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$nazwapliku)) 
  11. { 
  12. chmod($uploaddir.$nazwapliku, 0644); 
  13. echo ' Plik został wgrany pomyślnie.<br>'; 
  14. echo ' <img src="katalog/'.$nazwapliku.'"><br><br>'; 
  15. echo ' <input type="text" style="width: 100%;" value="192.168.1.13/~upload/obrazki/' . $nazwapliku . '"><br>'; 
  16. echo ' <input type="text" style="width: 100%;" value="[img]192.168.1.13/~upload/obrazki/' . $nazwapliku . '[/img]"><br>'; 
  17. echo ' <input type="text" style="width: 100%;" value="192.168.1.13/~upload/obrazki/' . $nazwapliku . '"><br>'; 
  18. echo ' <input type="text" style="width: 100%;" value='<a href="192.168.1.13/~upload/obrazki/' . $nazwapliku . '">192.168.1.13/~upload/obrazki/' . $nazwapliku . '</a>'><br>'; 
  19. } 
  20. else 
  21. echo 'Bład podczas dodawania zdjęcia'; 
  22. }
  23. ?>


1. Jak zrobic aby pliki byly usuwane po np. 7 dniach?
2. Jak zrobic aby mozna bylo wgrywac tylko pliki graficzne (.jpg, .gif, .png itp)?
l0ud
1. Do każdego zdjęcia użyć rekordu mysql z czasem dodania i ścieżką, napisać skrypt który pobiera rekordy, których czas dodania różni się od aktualnego ponad 7 dni, wtedy usuwał plik.

2. Użyć getimagesize() na $_FILES['plik']['tmp_name']. W trzecim elemencie zwracanej tablicy jest rozszerzenie, które możesz warunkami sprawdzić i wyrzucić błąd, kiedy będzie coś nie tak:

http://pl.php.net/manual/pl/function.getimagesize.php
Gnacio
Cytat(l0ud @ 21.03.2008, 13:10:02 ) *
1. Do każdego zdjęcia użyć rekordu mysql z czasem dodania i ścieżką, napisać skrypt który pobiera rekordy, których czas dodania różni się od aktualnego ponad 7 dni, wtedy usuwał plik.

2. Użyć getimagesize() na $_FILES['plik']['tmp_name']. W trzecim elemencie zwracanej tablicy jest rozszerzenie, które możesz warunkami sprawdzić i wyrzucić błąd, kiedy będzie coś nie tak:

http://pl.php.net/manual/pl/function.getimagesize.php

A moze jakos jasniej?
Malo sie znam na php.
Html dosc umiem, ale z php jest gozej.
A skrypt dorwalem w jakims tutorialu.
zzeus
No to teraz dorwij jakiś tutorial ze skryptem którego aktualnie potrzebujesz, zamiast nauczyć się tego od podstaw i samemu napisać.

Ps. słownik też mógłbyś dorwać, to tak przy okazji
artega
Pisane na szybkiego
  1. <?php
  2.  
  3. $upload_path = "./upload/";
  4.  
  5. if (is_dir($upload_path)) 
  6. {
  7. if ($dh = opendir($upload_path)) 
  8. {
  9. while (($file = readdir($dh)) !== false) 
  10. {
  11. if ($file == "." or $file == "..")
  12. {
  13. continue;
  14. }
  15.  
  16. if (filemtime($upload_path.$file) < (time()-(60*60*24*7)))
  17. {
  18. unlink($upload_path.$file);
  19. }
  20. }
  21.  
  22. closedir($dh);
  23. }
  24. }
  25.  
  26. if (isset($_POST['upload']))
  27. {
  28. if (is_uploaded_file($_FILES['image']['tmp_name']))
  29. {
  30. $file_type = mime_content_type($_FILES['image']['tmp_name']);
  31. $file_info = pathinfo($_FILES['image']['name']);
  32. $file_ext = $file_info['extension'];
  33. $file_name = md5(uniqid(rand(), true)) . "." . $file_ext;
  34.  
  35. if ($file_type == "image/gif" or $file_type == "image/jpg" or $file_type == "image/png")
  36. {
  37. move_uploaded_file($_FILES['image']['tmp_name'], $upload_path.$file_name);
  38. }
  39. }
  40. }
  41.  
  42. ?>
  43. <html>
  44. <body>
  45. <form enctype="multipart/form-data" action="server.php" method="post">
  46. Plik: <input type="file" name="image" /> <input type="submit" name="upload" value="Zapisz" />
  47. </form>
  48. </body>
  49. </html>

Skrypt sprawdza czy w katalogu $upload_path znajdują się pliki starsze niż 7 dni, jeżeli takie są to je usunie. Skrypt sprawdza funkcją mime_content_type nagłówek pliku przez co otrzymasz type mime. Dalej myślę, że sam rasz rade.
Ociu
Przenoszę do Przedszkola.
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.