if(isset($_FILES['attachment'])){
      $errors= array();
      $file_name = $_FILES['attachment']['name'];
      $file_size =$_FILES['attachment']['size'];
      $file_tmp =$_FILES['attachment']['tmp_name'];
      $file_type=$_FILES['attachment']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['attachment']['name'])));
      
      $extensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152){
         $errors[]='File size must be excately 2 MB';
      }
      
   }
    $sql = $wpdb->prepare( "INSERT INTO ".$tablename." (post_id, name, email, price, author, post_title, purchase_type, closing_date, concessions_amount, insp_from, insp_to, seller_charge, emd, home_warranty, seller_occupancy, attachment ) VALUES ( %d, %s, %s, %d, %s, %s, %s, %s, %d, %s, %s, %d, %d, %s, %s, %s )", $id, $name, $email, $price, $author, $post_title, $purchase_type, $closing_date, $concessions_amount, $insp_from, $insp_to, $seller_charge, $emd, $home_warranty, $seller_occupancy, $file_name );
    
    
    
    if(empty($errors)==true){
        
          function tp_wordpress_uploads_directory_path() {
    $upload_dir = wp_upload_dir();
    return $upload_dir['basedir'] . "/offers/";
}
        $upload_check =  move_uploaded_file($file_tmp,tp_wordpress_uploads_directory_path().$file_name);
         
      }

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

0
qazidev 14 Окт 2021 в 12:52

2 ответа

Лучший ответ

PHP имеет встроенную функцию специально для генерации случайных имен файлов:

https://www.php.net/manual/en/function.tempnam.php

Если вы действительно хотите добавить случайное число к имени файла, вы можете использовать:

$file_name = $_FILES['attachment']['name'].rand(1,10000);

Однако нет гарантии, что он не сгенерирует одно и то же число дважды или более раз, что приведет к повторной перезаписи файла.

0
sg- 14 Окт 2021 в 10:06

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

// or use post's id
$filename = $_SESSION['user_id'].'-'.time();
0
Gazmend Sahiti 14 Окт 2021 в 10:53