2015-07-07 6 views
0

Я получил этот код из w3school для загрузки файлов на сервер. Как изменить имя файла на случайное число, чтобы не возникало проблем с дублированием. Может кто-то, пожалуйста, помогите мне показать правильный и безопасный способ загрузки файлов.Загрузить файл и переименовать перед сохранением

// Change folder permission so that files can be uploaded 
    chmod('_data/cvs/', 0777); 

    // Upload File to Server 
    $target_dir = "_data/cvs/"; 
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 


    $uploadOk = 1; 
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
    // Check if image file is a actual image or fake image 
    if(isset($_POST["submit"])) { 
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
     if($check !== false) { 
      echo "File is an image - " . $check["mime"] . "."; 
      $uploadOk = 1; 
     } else { 
      echo "File is not an image."; 
      $uploadOk = 0; 
     } 
    } 
     // Check if file already exists 
     if (file_exists($target_file)) { 
      echo "Sorry, file already exists."; 
      $uploadOk = 0; 
     } 
     // Check file size 
     if ($_FILES["fileToUpload"]["size"] > 500000) { 
      echo "Sorry, your file is too large."; 
      $uploadOk = 0; 
     } 
     // Allow certain file formats 
     if($imageFileType != "doc" && $imageFileType != "docs" && $imageFileType != "pdf" 
     && $imageFileType != "gif") { 
      echo "Sorry, only Doc, Docs and PDF files are allowed."; 
      $uploadOk = 0; 
     } 
     // Check if $uploadOk is set to 0 by an error 
     if ($uploadOk == 0) { 
      echo "Sorry, your file was not uploaded."; 
     // if everything is ok, try to upload file 
     } else { 
      if (

      move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
       echo "The file ". basename($_FILES["fileToUpload"]["name"]). " has been uploaded."; 
      } else { 
       echo "Sorry, there was an error uploading your file."; 
      } 
     } 

    // Change folder permission so that nothing can be uploaded 
    chmod('_data/cvs/', 0644); 

Заранее благодарен!

+0

почему вы хотите переименовать файлы, я имел обыкновение думать, как вы, но я узнал, что, если будет дубликат, это лучше добавить число после имени файла (как окна). –

+0

также, fwiw, функции chmod будут работать только в том случае, если вы размещаете в ящике Linux. Если вы работаете на окнах, chmod не нужен – mituw16

+0

Что вы ищете - это функция 'hash': https://en.wikipedia.org/wiki/Hash_function –

ответ

1

Что я обычно делаю, это функция time().

Я хотел бы изменить эту часть кода:

$target_file = $target_dir .time(). basename($_FILES["fileToUpload"]["name"]); 
+0

Что делать, если два пользователя загружают свои файлы на одном и том же время? –

+0

@SLY, и у них одинаковые имена? – Raman

Смежные вопросы