Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Aby byly tylko obrazki, jpg, jpeg, gif itp.
vojtek_
post 16.03.2005, 18:22:57
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 13.03.2005

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


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


--------------------
Wykrztałcenie nie piwo nie musi być pełne.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
soldat
post 16.03.2005, 18:49:55
Post #2





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 14.03.2005
Skąd: W-wa

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


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.

Ten post edytował soldat 16.03.2005, 18:57:59
Go to the top of the page
+Quote Post
vojtek_
post 16.03.2005, 19:03:20
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 13.03.2005

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


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


--------------------
Wykrztałcenie nie piwo nie musi być pełne.
Go to the top of the page
+Quote Post
soldat
post 16.03.2005, 19:40:11
Post #4





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 14.03.2005
Skąd: W-wa

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


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
Go to the top of the page
+Quote Post
vojtek_
post 16.03.2005, 19:56:48
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 13.03.2005

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


Wielkie dzieki biggrin.gif
Dziala ty mój zbawco biggrin.gif
Nie ale na serio dziekuje za rozwiazanie


--------------------
Wykrztałcenie nie piwo nie musi być pełne.
Go to the top of the page
+Quote Post
psq
post 17.10.2005, 03:34:57
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 13.04.2005

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


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ę.
Go to the top of the page
+Quote Post
Lars
post 17.10.2005, 06:06:31
Post #7





Grupa: Zarejestrowani
Postów: 279
Pomógł: 15
Dołączył: 29.04.2005
Skąd: Gdynia

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


najlepiej losować nazwę uniqid(rand())

uniqid" title="Zobacz w manualu php" target="_manual


--------------------
(\.../) This is Bunny. Copy and paste bunny into
(O.o) your signature to help him gain world domination.
(> <) Zanim zapytasz | Też się przyda | Pomogłem ci? Kliknij "Pomógł"
Go to the top of the page
+Quote Post
psq
post 17.10.2005, 07:03:43
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 13.04.2005

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


ok.
czyli
  1. <?php
  2. $token = md5(uniqid());
  3. ?>

gdzie powinienem umiescic?
Go to the top of the page
+Quote Post
Lars
post 17.10.2005, 15:59:41
Post #9





Grupa: Zarejestrowani
Postów: 279
Pomógł: 15
Dołączył: 29.04.2005
Skąd: Gdynia

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


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

Ten post edytował Lars 17.10.2005, 16:01:37


--------------------
(\.../) This is Bunny. Copy and paste bunny into
(O.o) your signature to help him gain world domination.
(> <) Zanim zapytasz | Też się przyda | Pomogłem ci? Kliknij "Pomógł"
Go to the top of the page
+Quote Post
psq
post 17.10.2005, 21:59:24
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 13.04.2005

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


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!!!!
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: 24.07.2025 - 16:02