Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: загрузка несколько файлов и переименование
 
 автор: t3ma   (04.09.2009 в 12:11)   письмо автору
 
 

подскажите поажлуйста как сделать правильное переименование файлов при загрузке ?
<?php
if (isset($_POST['sendfile'])) { 
 
$num count($_FILES['pict']['name']); 
 
$s ''
 for (
$i 0$i $num$i++) { 
   
$f move_uploaded_file($_FILES['pict']['tmp_name'][$i],$_FILES['pict']['name'][$i]); 
   if (
$f
   
$s .= $_FILES['pict']['name'][$i].' - размер: '.$_FILES['pict']['size'][$i].' байт<br>'
  } 
 echo 
$s

?>


вот код если я загружать один файл а как его в цикл засунуть.. хранить в массиве или как ?
list($res) = array_reverse(explode('.', $_FILES["pict"]["name"][$i]));
$file_name = date('YmdGis'). "." .$res;

  Ответить  
 
 автор: Sergeich   (04.09.2009 в 14:43)   письмо автору
 
   для: t3ma   (04.09.2009 в 12:11)
 

Можно, например, вот так:

<?php
// Эта переменная содержит имя директории, в которую перемещаются загруженные файлы.
$dir "ххх";
// С помощью цикла перемещаем поочередно файлы
for ($i=0$i count ($_FILES['ufile']['tmp_name']); $i++){
$up move_uploaded_file($_FILES['ufile']['tmp_name'][$i], $dir.$_FILES['ufile']['name'][$i]);
// И поочередно переименовываем их, создавая для каждого уникальное имя, основанное на 
// хэшкоде (md5) файла и добавляем расширение
if ($up) {
rename($dir.$_FILES['ufile']['name'][$i], md5_file($dir.$_FILES['ufile']['name'][$i]).".jpg");
    }
}
?>

Написал на скорую руку для одного типа файлов, но этот код можно легко расширить, добавив дополнительные возможности в зависимости от необходимых типов файлов. Можно просто сохранять оригинальное расширение.

  Ответить  
 
 автор: t3ma   (04.09.2009 в 15:41)   письмо автору
 
   для: Sergeich   (04.09.2009 в 14:43)
 

это конечно не совсем то что мне нужно.

вот сам написал такой кодик, работает все прекрасно только вот правильно ли я это сделал ?
выдержу любую критику)))

 <form action="" method="post" enctype="multipart/form-data"> 
<input name="pict[]" type="file"> 
<input name="pict[]" type="file"> 
<input name="pict[]" type="file"> 
<input type="submit" name="sendfile" value="GO"> 
</form> 



<?php
if (isset($_POST['sendfile'])) { 
 
$num count($_FILES['pict']['name']); 
 
$s ''
 for (
$i 0$i $num$i++) { 


  
$ext = array($i => strtolower(substr($_FILES["pict"]["name"][$i], strrpos($_FILES["pict"]["name"][$i], ".") + 1)));

  if (!empty(
$ext[$i])) {
           
$file_name = array($i => date('YmdGis').$i"." .$ext[$i]);
           echo 
$file_name[$i];

  
$f move_uploaded_file($_FILES['pict']['tmp_name'][$i],$_FILES['pict']['name'][$i]); 
   if (
$f
   
$s .= $_FILES['pict']['name'][$i].' - размер: '.$_FILES['pict']['size'][$i].' байт<br>'

  }
   
      } 
 echo 
$s
 

?>

  Ответить  
 
 автор: Sergeich   (04.09.2009 в 16:30)   письмо автору
 
   для: t3ma   (04.09.2009 в 15:41)
 

А какой вообще результат Вы хотите увидеть? Что Вам нужно сделать с файлом (его именем)? И какой результат дает Вам Ваш код? По идее, он вообще ничего не делает с именем файла. У Вас в коде вообще нет функции переименования файла.

  Ответить  
 
 автор: t3ma   (04.09.2009 в 16:54)   письмо автору
 
   для: Sergeich   (04.09.2009 в 16:30)
 


<?php
$f 
move_uploaded_file($_FILES['pict']['tmp_name'][$i],$file_name[$i]); 
?>

вот так вот)))
переименовывает имя файла в текущую дату

  Ответить  
 
 автор: Sergeich   (04.09.2009 в 17:01)   письмо автору
 
   для: t3ma   (04.09.2009 в 15:41)
 

А еще было бы необходимо в целях безопасности делать проверочку по mime-type и удалять файлы, которые не подходят по типу под допустимые, чтобы не было возможности загрузить вредоносный программный код и запустить его на исполнение.
И еще одно соображение: Ваша мысль относительно назначения имени файла имеет один недостаток - если другой пользователь в это же время будет загружать тоже файлы и время совпадет и цифра, добавляемая к концу файла? Тогда один будет просто перезаписан и утерян.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования