ďťż
Podstrony
|
telcocafeWitam :)Mam taki skrypt do wysyłania plików na serwer: <?php $upload_dir = './pliki/'; $maxfilesize = 102400; $send = $HTTP_POST_VARS['send']; $userfile = $HTTP_POST_FILES['userfile']; $phpself = $HTTP_SERVER_VARS['PHP_SELF']; if(isset($send)) { if(is_uploaded_file($userfile['tmp_name'])) { if($userfile['size'] <= $maxfilesize) { if(move_uploaded_file($userfile['tmp_name'], $upload_dir.'/'.$userfile['name'])) echo '<p>Plik został wysłany</p>'; } } } ?> <form action="<?php echo $phpself; ?>" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxfilesize; ?>"> <input type="file" name="userfile"> <input type="submit" name="send" value="Wyslij plik"> </form> Mam teraz problem - jak przerobić ten skrypt, żeby jeśli wysyłany plik już istnieje na serwerze, to zmieniał na inną nazwę (np. dodawał (1))? Np. ktoś wysłał plik plik.txt i gdy ponownie go wyśle, to plik będzie miał nazwę plik(1).txt. Z góry dziękuję za pomoc. Poprawiłem trochę kodu, obecnie $HTTP_*_VARS są zastąpione tablicami superglobalnymi $_POST, $_GET itd., wystylizowałem i dodałem fukcję Ci potrzebną. Dodaje ona datę jeżeli dany plik już jest. Powiedzmy, plik się nazywa test.txt, to skrypt podczas wgrywania pliku o takiej samej nazwie zmieni jego nazwę na test(200811172055).txt Kod: <?php $upload_dir = './pliki/'; $maxfilesize = 102400; $userfile = $_FILES['userfile']; if(isset($_POST['send'])) { if(is_uploaded_file($userfile['tmp_name'])) { if($userfile['size'] <= $maxfilesize) { $file_patch = $upload_dir.'/'.$userfile['name']; if (file_exists($file_patch)) { $extension = explode('.', $userfile['name']); $cnt = count($extension) -2; $file_name = ''; for ($i=0; $i<$cnt; $i++) { $file_name .= $extension[$i]; } $i_ext = count($extension) -1; $file_patch = $upload_dir.'/'.$file_name.'('.date('YmdGi',time()) .').'.$extension[$i_ext]; } if(move_uploaded_file($userfile['tmp_name'], $file_patch)) { echo '<p>Plik został wysłany</p>'; } } } } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxfilesize; ?>"> <input type="file" name="userfile"> <input type="submit" name="send" value="Wyslij plik"> </form> Jakby coś się nie zgadzało, albo nie chodziło jak trzeba - pisz :) PS. Zamiast po prostu szukać kolejnej wolnej liczby zrobiłem kod tak, aby była w nawiasach data (skrypt nie musi wykonać tyle instrukcji warunkowych = większa szybkość). Pozdrawiam! Użytkownik Petermechanic edytował ten post 17 listopad 2008, 20:08 Sprawdziłem i działa tak: wysyłam jakiś plik (np. plik.txt), gdy go wyślę po raz drugi, to ten drugi ma nazwę "(200811172036).txt", więc nie daje plik(200811172036).txt :(. A takie pytanie, jak zapisywać tą datę bez tego, że istnieje plik? :) Czyli np. wysyłam plik.txt i automatycznie mi dodaje (bez sprawdzania, czy taki plik istnieje). Tak czy inaczej WIELKIE DZIĘKI :) Już działa, poprawiony kod: <?php $upload_dir = './pliki/'; $maxfilesize = 102400; $userfile = $_FILES['userfile']; if(isset($_POST['send'])) { if(is_uploaded_file($userfile['tmp_name'])) { if($userfile['size'] <= $maxfilesize) { $file_patch = $upload_dir.'/'.$userfile['name']; if (file_exists($file_patch)) { $extension = explode('.', $userfile['name']); $i_ext = count($extension) -1; $file_name = ''; for ($i=0; $i<$i_ext; $i++) { $file_name .= $extension[$i]; } $file_patch = $upload_dir.'/'.$file_name.'('.date('YmdGi',time()) .').'.$extension[$i_ext]; } if(move_uploaded_file($userfile['tmp_name'], $file_patch)) { echo '<p>Plik został wysłany</p>'; } } } } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxfilesize; ?>"> <input type="file" name="userfile"> <input type="submit" name="send" value="Wyslij plik"> </form> A to, jakbyś w nawiasie zawsze chciał mieć datę: <?php $upload_dir = './pliki/'; $maxfilesize = 102400; $userfile = $_FILES['userfile']; if(isset($_POST['send'])) { if(is_uploaded_file($userfile['tmp_name'])) { if($userfile['size'] <= $maxfilesize) { $file_patch = $upload_dir.'/'.$userfile['name']; $extension = explode('.', $userfile['name']); $i_ext = count($extension) -1; $file_name = ''; for ($i=0; $i<$i_ext; $i++) { $file_name .= $extension[$i]; } $file_patch = $upload_dir.'/'.$file_name.'('.date('YmdGi',time()) .').'.$extension[$i_ext]; if(move_uploaded_file($userfile['tmp_name'], $file_patch)) { echo '<p>Plik został wysłany</p>'; } } } } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $maxfilesize; ?>"> <input type="file" name="userfile"> <input type="submit" name="send" value="Wyslij plik"> </form> Pozdrawiam :) WIELKIE DZIĘKI :) Naprawdę, bardzo pomogłeś :) Wszystko działa :) Temat do zamknięcia... |
|||
Sitedesign by AltusUmbrae. |