Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Aby byly tylko obrazki
Forum PHP.pl > Forum > Gotowe rozwiązania
vojtek_
Witam
Sciagnolem sobie skrypt uploadu mozna pobrac z tad
http://www.hotscripts.pl/pobierz-2091.html
i pojawia sie problem
- jak ustawic by uploadowac mozna bylo tylko jpg, gif, bmp, tiff, png itd.
- jak zrobic aby kopiowalo url (po uploadzie pokazuje sie na górze) do schowka po nacisnieciu przycisku kopiuj.
Bardzo was prosze o pomoc smile.gif
soldat
Typ pliku można sprawdzić za pomocą funkcji getimagesize() - musisz jej użyć w odniesieniu do pliku tymczasowego przed jego skopiowaniem na właściwe miejsce na serwerze.
Czyli $_FILES['userfile']['tmpname']

Zobacz w manualu : getimagesize" title="Zobacz w manualu PHP" target="_manual

Kopiowanie to raczej w JavaScript, bo przecież php nie działa po stronie klienta - kiedyś coś takiego zrobionego było chyba na mozilla.org (to była jedna z funkcji wizualnego edytora napisanego w JS), w tej chwili szczegółów nie pamiętam. Spróbuj może wyszukać w google "RTE javascript" czy coś podobnego.
vojtek_
No ale jak dokladniej sadsmiley02.gif
Bo w simple upload mam cos takiego
  1. <?php
  2. $temp_name = $_FILES['userfile']['tmp_name'];
  3. $file_name = $_FILES['userfile']['name']; 
  4. $file_type = $_FILES['userfile']['image/gif']; 
  5. $file_size = $_FILES['userfile']['size']; 
  6. $result = $_FILES['userfile']['error'];
  7. $file_url = $upload_url.$file_name;
  8. $file_path = $upload_dir.$file_name;
  9. ?>

A mówiles mi ze ma byc
  1. <?php
  2. $_FILES['userfile']['tmpname']
  3. ?>

Jednym slowem pogubilem sie sad.gif
Co ma byc w tym tmpname i userfile smile.gif
soldat
Sorry za skróty myślowe w poprzednim poście, ale już z 10 godzin siedzę przed komputerem i trochę sleepysmiley03.gif

Nazwę pliku tymczasowego już masz, bo w twoim skrypcie jest linijka :

  1. <?php
  2. $temp_name = $_FILES['userfile']['tmp_name'];
  3. ?>


więc nic nie musisz podstawiać pod 'userfile' (to przecież nazwa pola file w formularzu)

Teraz pod listą zmiennych możesz dodać taki kod :

  1. <?php
  2. $im=getimagesize($temp_name);
  3. ?>


W manualu stoi, że w zwróconej tablicy po indeksem 2 jest wartość określająca typ pliku.
Np. jeżel chciałbyś przepuszczać tylko GIF-y i JPEG-i wystarczy dodać niżej warunek :

  1. <?php
  2. if (($im[2]!=1) && ($im[2]!=2)) {
  3. $message=&#092;"Niewłaściwy typ pliku\";
  4. return($message);
  5. }
  6.  
  7. elseif ($file_name==&#092;"\") ......
  8.  
  9.  
  10. ?>


Jeżeli chcesz pozwolić uploadować jeszcze jakieś inne typy plików wystarczy dodać odpowiednie wartości do powyższego warunku (ponownie polecam manual php)

Pozdrawiam
vojtek_
Wielkie dzieki biggrin.gif
Dziala ty mój zbawco biggrin.gif
Nie ale na serio dziekuje za rozwiazanie
psq
Witam, znalazłem ten temat, ponieważ też posiadam owy skrypt. Mam pytanie co do nadawanych nazw przez skrypt. Jezeli się wgra juz jakis plik powiedzmy test.jpg, to mozna zrobic zeby program nie zamieniał plików? chodzi o to, że jak wysle kolejny plik test.jpg to skrypt mi podmieni owy plik i stary zostanie skasowany na rzecz nowego. Można coś dopisać w skrypcie, żeby nadawał inną nazwę? powiedzmy 1-test.jpg itp.
Z góry dziękuję.
Lars
najlepiej losować nazwę uniqid(rand())

uniqid" title="Zobacz w manualu php" target="_manual
psq
ok.
czyli
  1. <?php
  2. $token = md5(uniqid());
  3. ?>

gdzie powinienem umiescic?
Lars
sprawdź mime() i w zależności od rozszeżenia ustaw ten $token.rozszeżenie...

dobra gotowy kod:
  1. <?php
  2. if(!isset($_POST['submit'])) {
  3. echo '<form enctype="multipart/form-data" action="panel/changeavatar/1/" method="post">
  4. <b>Avatar</b>:<br>
  5. <input type="file" name="avatar"><br><br>
  6. <input type="submit" name="submit" value="Wyślij">
  7. </form>';
  8. } else {
  9. $file=$_FILES['avatar'];
  10. $upload=str_replace('avatar_computer.php', 'avatars', $_SERVER['SCRIPT_FILENAME']);
  11.  
  12. if($file['type']=='image/pjpeg' or $file['type']=='image/jpg' or $file['type']=='image/jpeg' or $file['type']=='image/gif' or $file['type']=='image/x-png' or $file['type']=='image/png') {
  13.  
  14. if($file['type']=='image/pjpeg' or $file['type']=='image/jpg' or $file['type']=='image/jpeg') {
  15. $ext='.jpg';
  16. } elseif($file['type']=='image/gif') {
  17. $ext='.gif';
  18. } elseif($file['type']=='image/x-png' or $file['type']=='image/png') {
  19. $ext='.png';
  20. } else {
  21. die();
  22. }
  23.  
  24. $uniq=uniqid(rand());
  25.  
  26. copy($file['tmp_name'], $upload.'/'.$uniq.$ext);
  27.  
  28. echo 'Obrazek został pomyślnie załadowany.<br><br><a href="panel/changeavatar/">Wróć</a>';
  29.  
  30. } else {
  31. echo 'Plik nie jest obrazkiem. Możliwe jest załadowanie plików graficznych typu gif/jpg/png.<br><br><a href="panel/changeavatar/">Wróć</a>';
  32. }
  33.  
  34. }
  35. ?>


wycięte z mojego cmsa...

ps. te obrazki będą miały dziwne nazwy...bo to kod do uploadu avatarków smile.gif

ładuje
- PNG
- JPG
- GIF

te pjpg to właściwie sprawka IE i konieczności zgodności z nim winksmiley.jpg
psq
ok. dzieki wielkie!!!!!!!, wzielem jedna rzecz z twojego skryptu i dodalem do mojego. ale mam pytanie, jezeli uploaduje plik ze spacja w nazwie. da rade zrobic aby jakis wpis usuwal ta spacje? Aktualnie moj uploader wyglada tak:
  1. <?php
  2. ?php
  3.  
  4. $site_name = $_SERVER['HTTP_HOST'];
  5. $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
  6. $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
  7.  
  8. $upload_dir = "upload_files/";
  9. $upload_url = $url_dir."/upload_files/";
  10. $message ="";
  11.  
  12. if (!is_dir("upload_files")) {
  13. die ("upload_files directory doesn't exist");
  14. }
  15.  
  16. if ($_FILES['userfile']) {
  17. $message = do_upload($upload_dir, $upload_url);
  18. }
  19. else {
  20. $message = "";
  21. }
  22.  
  23. print $message;
  24.  
  25. function do_upload($upload_dir, $upload_url) {
  26. $uniq=uniqid(rand());
  27. $temp_name = $_FILES['userfile']['tmp_name'];
  28. $file_name = $_FILES['userfile']['name']; 
  29. $file_type = $_FILES['userfile']['type']; 
  30. $file_size = $_FILES['userfile']['size']; 
  31. $result = $_FILES['userfile']['error'];
  32. $file_url = $upload_url.$uniq.$ext.$file_name;
  33. $file_path = $upload_dir.$uniq.$ext.$file_name;
  34. $im=getimagesize($temp_name);
  35. if (($im[2]!=1) && ($im[2]!=2) && ($im[2]!=3)) {
  36. $message="Niewłaściwy typ pliku";
  37. return($message);
  38. }
  39. if ( $file_name =="")
  40.  { 
  41. $message = "Invalid File Name Specified";
  42. return $message;
  43. }
  44. else if ( $file_size > 150000) {
  45. $message = "Błąd. Maksymalny rozmiar Pliku to 150KB.";
  46. return $message;
  47. }
  48. //File Type Check
  49. else if ( $file_type == "php" ) {
  50. $message = "Błąd" ;
  51. return $message;
  52. }
  53.  
  54. $result = move_uploaded_file($temp_name, $file_path);
  55. $message = ($result)?"Link do zdjęcia <a href=$file_url>$file_url</a>" :
  56. "Coś poszło nie tak przy załadowywaniu.";
  57.  
  58. return $message;
  59. }
  60. ?>


Jednak nie wiem do czego sluzy pare rzeczy w tym skrypcie, bo po protu ich nie widze w dzialaniu, ale co do tej spacja.. da rade coś z tym zrobić?
Z góry dzięki!!!!
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.