ďťż

[PHP] Upload plików! Potrzebna drobna modyfikacja skryptu ;)

       

Podstrony


telcocafe

Mam oto taki gotowy skrypt (Simple Upload) upload'ujący pliki na serwer, mam z nim jednak problem,a mianowicie nie potrafię go zmodyfikować tak aby można było uploadować tylko pliki graficzne,a przy próbie wysyłania innych typów plików pojawiał się stosowny komunikat.

Na stronie z której pobrałem skrypt, jest napisane że wystarczy drobna zmiana w skrypcie (niestety nie napisali jaka :( ), z uwagi na to że PHP nie jest moją mocną stroną proszę o pomoc kogoś znającego PHP. ;)

<?php $site_name = $_SERVER['HTTP_HOST']; $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]); $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'] ; $upload_dir = "upload_files/"; $upload_url = $url_dir."/upload_files/"; $message =""; //create upload_files directory if not exist //If it does not work, create on your own and change permission. if (!is_dir("upload_files")) { die ("upload_files directory doesn't exist"); } if ($_FILES['userfile']) { $message = do_upload($upload_dir, $upload_url); } else { $message = "Invalid File Specified."; } print $message; function do_upload($upload_dir, $upload_url) { $temp_name = $_FILES['userfile']['tmp_name']; $file_name = $_FILES['userfile']['name']; $file_type = $_FILES['userfile']['type']; $file_size = $_FILES['userfile']['size']; $result = $_FILES['userfile']['error']; $file_url = $upload_url.$file_name; $file_path = $upload_dir.$file_name; //File Name Check if ( $file_name =="") { $message = "Invalid File Name Specified"; return $message; } //File Size Check else if ( $file_size > 500000) { $message = "The file size is over 500K."; return $message; } //File Type Check else if ( $file_type == "text/plain" ) { $message = "Sorry, You cannot upload any script file" ; return $message; } $result = move_uploaded_file($temp_name, $file_path); $message = ($result)?"File url <a href=$file_url>$file_url</a>" : "Somthing is wrong with uploading a file."; return $message; } ?> <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post"> Upload Image<input type="file" id="userfile" name="userfile"> <input type="submit" name="upload" value="Upload"> </form>
Użytkownik Seveneven edytował ten post 06 luty 2008, 21:52


po
if ( $file_name =="") { $message = "Invalid File Name Specified"; return $message; }
linijce daj
preg_match('/\.[a-zA-Z0-9]{2,5}$/', $file_name, $match); $ext=''; if(isset($match[0])) $ext=$match[0]; $ext=strtolower($ext); $arr=array('.gif', '.jpg', '.png','.bmp'); if(!in_array($ext, array('.gif', '.jpg', '.png','.bmp'))) return 'Nieprawidłowy format pliku';
Użytkownik polasek edytował ten post 02 luty 2008, 21:33
Bardzo dziękuję, szczerze mówiąc nie spodziewałem się aż tak szybkiej odpowiedzi :D
Wszystko działa i jest ok ! :)

Mam jeszcze kilka pytań, być może ktoś wie jak to zrobić (chodzi mi nadal o ulepszanie powyższego skryptu):

* obecnie jeśli plik o danej nazwie już istnieje, jest on nadpisywany, czy da się zmodyfikować ten skrypt żeby tak samo nazywające się pliki były np. numerowane, żeby uniknąć nadpisania?

* jak zmodyfikować skrypt, tak żeby po podaniu ścieżki do jednego pliku pojawiło się pod spodem kolejne pole do przesłania pliku, i tak do maksymalnie trzech pól, proszę o pomoc, podejrzewam że do tego trzeba będzie zatrudnić Javascript :D

<script type="text/javascript"> num=1; function addAnother() { var n=document.createElement('input'); n.type='file'; n.name='file'+String(num); n.onchange=addAnother; if(num<3) { document.getElementById('test').appendChild(n);n num++; } } </script> <div id="test"> <input type="file" name-"file0" onchange="addAnother()"/> </div>

a co do sprawdzania nazwy to przed $result = move_uploaded_file($temp_name, $file_path);
daj
while(file_exists($file_path)) $file_path.=rand(1,100000);

Tylko pamietaj zeby w skrypcie php pozamieniać wtedy odwolania do pliko w $_FILES;
Użytkownik polasek edytował ten post 03 luty 2008, 22:24


Polasek, nawet nie wiem jak Ci dziękować ;)
Twoja wiedza w zakresie PHP/Javascript jest naprawdę imponująca, masz u mnie piwo stary :drunk:

Kolejny problem, tym razem z tym kodem, za pierwszym razem tego nie zauważyłem,ale:
nie wiem co skopałem w kodzie, ale skrypt uploaduje tylko pierwszy plik, nie wiem dlaczego :(
poniżej kod, może ktoś znajdzie ten błąd ;)

<?php $site_name = $_SERVER['HTTP_HOST']; $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]); $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'] ; $upload_dir = "upload_files/"; $upload_url = $url_dir."/upload_files/"; $message =""; //create upload_files directory if not exist //If it does not work, create on your own and change permission. if (!is_dir("upload_files")) { die ("upload_files directory doesn't exist"); } if ($_FILES['file']) { $message = do_upload($upload_dir, $upload_url); } else { $message = "Invalid File Specified."; } print $message; function do_upload($upload_dir, $upload_url) { $temp_name = $_FILES['file']['tmp_name']; $file_name = $_FILES['file']['name']; $file_type = $_FILES['file']['type']; $file_size = $_FILES['file']['size']; $result = $_FILES['file']['error']; $file_url = $upload_url.$file_name; $file_path = $upload_dir.$file_name; //File Name Check if ( $file_name =="") { $message = "Invalid File Name Specified"; return $message; } preg_match('/.[a-zA-Z0-9]{2,5}$/', $file_name, $match); $ext=''; if(isset($match[0])) $ext=$match[0]; $ext=strtolower($ext); $arr=array('.gif', '.jpg', '.JPG', '.png','.bmp'); if(!in_array($ext, array('.gif', '.jpg', '.png','.bmp'))) return 'Nieprawidłowy format pliku'; //File Size Check else if ( $file_size > 500000) { $message = "The file size is over 500K."; return $message; } //File Type Check else if ( $file_type == "text/plain" ) { $message = "Sorry, You cannot upload any script file" ; return $message; } $result = move_uploaded_file($temp_name, $file_path); $message = ($result)?"File url <a href=$file_url>$file_url</a>" : "Somthing is wrong with uploading a file."; return $message; } ?> <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post"> &lt;script type="text/javascript"> num=1; function addAnother() { var n=document.createElement('input'); n.type='file'; n.name='file'+String(num); n.onchange=addAnother; if(num<3) { document.getElementById('test').appendChild(n);n num++; } } </script> <div id="test"> <input type="file" name="file" onchange="addAnother()"/> </div> <input type="submit" name="upload" value="Upload"> </form>

<?php $site_name = $_SERVER['HTTP_HOST']; $url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]); $url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'] ; $upload_dir = "upload_files/"; $upload_url = $url_dir."/upload_files/"; $message =""; //create upload_files directory if not exist //If it does not work, create on your own and change permission. if (!is_dir("upload_files")) { die ("upload_files directory doesn't exist"); } $names=array('file', 'file1','file2'); foreach($names as $file) { if(isset($_FILES[$file])) { do_upload($file, $upload_dir, $upload_url); $sended=true; } } if(!isset($sended)) $message = "Invalid File Specified."; print $message; function do_upload($name, $upload_dir, $upload_url) { $temp_name = $_FILES[$name]['tmp_name']; $file_name = $_FILES[$name]['name']; $file_type = $_FILES[$name]['type']; $file_size = $_FILES[$name]['size']; $result = $_FILES[$name]['error']; $file_url = $upload_url.$file_name; $file_path = $upload_dir.$file_name; //File Name Check if ( $file_name =="") { $message = "Invalid File Name Specified"; return $message; } preg_match('/\.[a-zA-Z0-9]{2,5}$/', $file_name, $match); $ext=''; if(isset($match[0])) $ext=$match[0]; $ext=strtolower($ext); $arr=array('.gif', '.jpg', '.JPG', '.png','.bmp'); if(!in_array($ext, array('.gif', '.jpg', '.png','.bmp'))) return 'Nieprawidłowy format pliku'; //File Size Check else if ( $file_size > 500000) { $message = "The file size is over 500K."; return $message; } //File Type Check else if ( $file_type == "text/plain" ) { $message = "Sorry, You cannot upload any script file" ; return $message; } $result = move_uploaded_file($temp_name, $file_path); $message = ($result)?"File url <a href=$file_url>$file_url</a>" : "Somthing is wrong with uploading a file."; return $message; } ?> <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post"> &lt;script type="text/javascript"> num=1; function addAnother() { var n=document.createElement('input'); n.type='file'; n.name='file'+String(num); n.onchange=addAnother; if(num<3) { document.getElementById('test').appendChild(n);n num++; } } </script> <div id="test"> <input type="file" name="file" onchange="addAnother()"/> </div> <input type="submit" name="upload" value="Upload"> </form>

// Edit. Szykuj 2 piwa
Użytkownik polasek edytował ten post 05 luty 2008, 21:14
Thank you very much :worshippy:

//edit heh, piwa oczywiście: :cheers:

//edit

.... <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post"> &lt;script type="text/javascript"> num=1; function addAnother() ....

Skrypt wygodnie zagnierzdżony w stronie,test i k***a wszystko sie sypło już miałem nowe pytanie wysyłać a tu zauważyłem mały błędzik, ale już wszystko ok :thumbsup: , każdemu się zdarza (u mnie zdarza się zdecydowanie za często niestety..)
Użytkownik Seveneven edytował ten post 06 luty 2008, 21:48
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.