2016-02-03 3 views
-2

Я создаю форму для загрузки фотографий на конкурс. У меня нет проблем в настольной версии, но у смартфонов есть проблема, что каждая фотография загружается как «image.jpeg» или «image.jpg», что предотвращает загрузку следующего, потому что он обнаруживает изображение с тем же именем. Как я могу решить эту проблему? Это мой код:Пропустить «Проверить, существует ли файл»

<?php 
    $target_dir = "uploads/"; 
    $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 "Il file selezionato non è un'immagine. "; 
      $uploadOk = 0; 
     } 
    } 
    // Check if file already exists 
    if (file_exists($target_file)) { 
     echo "Spiacente, una foto con lo stesso nome è già stata inviata. "; 
     $uploadOk = 0; 
    } 
    // Check file size 500kb 
    if ($_FILES["fileToUpload"]["size"] > 2000000) { 
     echo "Spiacente, le dimesioni della foto superano il limite consentito. "; 
     $uploadOk = 0; 
    } 
    // Allow certain file formats 
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
    && $imageFileType != "gif") { 
     echo "Spiacente, i formati consentiti sono jpg e png. "; 
     $uploadOk = 0; 
    } 
    // Check if $uploadOk is set to 0 by an error 
    if ($uploadOk == 0) { 
     echo "Spiacente la tua foto non è stata inviata. "; 
    // if everything is ok, try to upload file 
    } else { 
     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
      @mail($email_to, $email_subject, $email_message, $headers); 
      echo "Messaggio Inviato. La tua foto ". basename($_FILES["fileToUpload"]["name"]). " è stata inviata con successo. "; 
     } else { 
      echo "Spiacente, si è verificato un errore nel caricamento della tua foto. "; 
     } 
    } 
    ?> 
+0

Вы можете просто удалить, если условие, при котором он проверяет, является ли файл уже существует? Но если вы это сделаете, вы должны произвольно создать имя файла. –

+0

Дайте имя каждому изображению. –

+0

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

ответ

0

Проверьте, существует ли файл, если он существует, а затем создать новое имя файла со временем, прикрепленной к нему (или нечто подобное), а затем переместить загруженный файл.

образец приведен ниже, вы должны изменить его, чтобы соответствовать вашим потребностям

$file_name = $_FILES["file"]["name"]; 
    if (file_exists($dstFile . $file_name)) { 
     $path_parts = pathinfo($dstFile . $file_name); 
     $file_name = $path_parts['filename'] . '-' . time() . '.' . $path_parts['extension']; 
    } 
    $dstFile .= $file_name; 
    move_uploaded_file($_FILES["file"]["tmp_name"],$dstFile) 
+0

Но у меня есть оставить текущий файл if? и затем вставить это? – user1269141

+0

Вы хотите написать старый файл? Или вы хотите сохранить старый файл и создать новое имя файла для нового файла? Решение, которое я предоставил, относится ко второму – Oxi

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