|
|
|
| подскажите поажлуйста как сделать правильное переименование файлов при загрузке ?
<?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; | |
|
|
|
|
|
|
|
для: 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");
}
}
?>
|
Написал на скорую руку для одного типа файлов, но этот код можно легко расширить, добавив дополнительные возможности в зависимости от необходимых типов файлов. Можно просто сохранять оригинальное расширение. | |
|
|
|
|
|
|
|
для: 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;
}
?>
|
| |
|
|
|
|
|
|
|
для: t3ma
(04.09.2009 в 15:41)
| | А какой вообще результат Вы хотите увидеть? Что Вам нужно сделать с файлом (его именем)? И какой результат дает Вам Ваш код? По идее, он вообще ничего не делает с именем файла. У Вас в коде вообще нет функции переименования файла. | |
|
|
|
|
|
|
|
для: Sergeich
(04.09.2009 в 16:30)
| |
<?php
$f = move_uploaded_file($_FILES['pict']['tmp_name'][$i],$file_name[$i]);
?>
|
вот так вот)))
переименовывает имя файла в текущую дату | |
|
|
|
|
|
|
|
для: t3ma
(04.09.2009 в 15:41)
| | А еще было бы необходимо в целях безопасности делать проверочку по mime-type и удалять файлы, которые не подходят по типу под допустимые, чтобы не было возможности загрузить вредоносный программный код и запустить его на исполнение.
И еще одно соображение: Ваша мысль относительно назначения имени файла имеет один недостаток - если другой пользователь в это же время будет загружать тоже файлы и время совпадет и цифра, добавляемая к концу файла? Тогда один будет просто перезаписан и утерян. | |
|
|
|