2014-12-02 5 views
1

Am с помощью PHP переименовать несколько файлов, он отлично работает, но мне нужно, чтобы сохранить файл только случайное число в качестве имени файлаМножественные переименования файла ошибки

Но в моем случае я получить случайное число + имя файла, в

Когда я удалить имя файла изображение, сохраненное без extension

мне нужно сохранить файл с именем только переименованным, мне нужно удалить имя файла и сохранить случайное число я использовать этот метод для генерации случайных чисел $newname = md5(rand() * time());

здесь переименовывать часть move_uploaded_file($file_tmp, "$desired_dir/" . $newname . $file_name); Когда я удалить $file_name выходной файл сохраняется без расширения

Вот мой код

<?php 

$db_username = 'sanoj'; 
$db_password = '123456'; 
if (isset($_FILES['files'])) { 
    $errors = array(); 
    foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) { 
     $finfo = pathinfo($_FILES['files']['name'][$key]); 
     $extension = ''; 
     if (!empty($finfo[PATHINFO_EXTENSION])) { 
      $extension = "." . $finfo[PATHINFO_EXTENSION]; 
     } 
     $file_name = md5(rand() * time()) . "." . $extension; 

     $file_size = $_FILES['files']['size'][$key]; 
     $file_tmp = $_FILES['files']['tmp_name'][$key]; 
     $file_type = $_FILES['files']['type'][$key]; 
     if ($file_size > 2097152000) { 
      $errors[] = 'File size must be less than 2 MB'; 
     } 
     $desired_dir = "user_data/"; 
     if (empty($errors) == true) { 
      if (is_dir($desired_dir) == false) { 
       mkdir("$desired_dir", 0700);  // Create directory if it does not exist 
      } 
      if (is_dir("$desired_dir/" . $file_name) == false) { 
       move_uploaded_file($file_tmp, "$desired_dir/" . $file_name); 
      } else {         // rename the file if another one exist 
       $new_dir = "$desired_dir/" ; 
       rename($file_tmp, $new_dir); 
      } 
     } else { 
      print_r($errors); 
     } 
    } 

Важно выше код работает на множественном изображение загрузить

+0

Или могу я переименовать файл после того, как файл, сохраненный в сервере –

ответ

0

Получить расширение файла, проверьте, есть ли расширение, если да, то приложите к нему, создать случайное число, и слейте номер с расширением:

$finfo = pathinfo($_FILES['files']['name'][$key]); 
$extension = ''; 
if (!empty($finfo[PATHINFO_EXTENSION])) { 
    $extension = "." . $finfo[PATHINFO_EXTENSION]; 
} 
$file_name = md5(rand() * time()) . "." . $extension; 
+0

Можете ли вы мне помочь, где мне нужно изменить –

+0

, замените строку '$ file_name = ...' моим кодом. – vaso123

+0

У меня есть обновленный код, о котором идет речь, и я могу видеть только сохранение файла, у которого нет расширения. –

0
$extension = end(explode('.', $_FILES['image']['name'])); 
move_uploaded_file($file_tmp, "$desired_dir/" . $newname.".".$extension); 

попробуйте это вместо

move_uploaded_file($file_tmp, "$desired_dir/" . $newname . $file_name); 
+0

я думаю, что вы должны прочитать выше вопрос еще раз, когда я удалить '$ file_name' выходного изображения сохраняется без расширения –

+0

я быть_наст [$ ключа] это весело ction делает загрузку нескольких изображений, потому что '' –

+0

$ extension = strtolower (end (explode ('.', $ _ FILES ['files'] ['name'] [ $ ключ]))); Пожалуйста, попробуйте это вместо этого. –

0

Попробуйте

$valid_formats = array("jpg", "png", "gif", "zip", "bmp"); 
$max_file_size = 1024*100; //100 kb 
$path = "uploads/"; // Upload directory 
$count = 0; 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 
    // Loop $_FILES to exeicute all files 
    foreach ($_FILES['files']['name'] as $f => $name) {  
     if ($_FILES['files']['error'][$f] == 4) { 
      continue; // Skip file if any error found 
     }   
     if ($_FILES['files']['error'][$f] == 0) {    
      if ($_FILES['files']['size'][$f] > $max_file_size) { 
       $message[] = "$name is too large!."; 
       continue; // Skip large files 
      } 
      elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
       $message[] = "$name is not a valid format"; 
       continue; // Skip invalid file formats 
      } 
      else{ // No error found! Move uploaded files 
       if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$name)) 
       $count++; // Number of successfully uploaded file 
      } 
     } 
    } 
} 
+0

. Я не хочу менять код. Можете ли вы просто внести некоторые изменения и работать, как я хочу **, если мне нужно все код я бы точно так же, как вопрос: «Мне нужно загрузить изображение и переименовать» ** я просто хочу знать, что не так с моим кодом –

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