ďťż
Podstrony
|
telcocafeMam 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"> <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"> <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"> <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 |
|||
Sitedesign by AltusUmbrae. |