|
|
|
| Добрый день.
Есть функция загрузки файлов
<?
function uploadedFile($tmp, $valid, $todir) {
global $error;
if (is_uploaded_file($_FILES[$tmp]['tmp_name'])) {
$filename = $_FILES[$tmp]['tmp_name'];
$ext = substr($_FILES[$tmp]['name'], 1 + strrpos($_FILES[$tmp]['name'], "."));
$chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXY Zabcdefghijklmnopqrstuvwxyz";
$realname = '';
for($i=0; $i < 8; $i++) {
$realname.= substr($chars,(mt_rand() % strlen($chars)),1);
}
$realname = $realname.'.'.$ext;
if (filesize($filename) > (30000 * 1024)) {
$error.= 'Допустимый размер файла - <b>30 Mb</b>;';
} elseif (!in_array(strtolower($ext), $valid)) {
$error.= 'Недопустимый тип файла;';
} else {
if (@move_uploaded_file($filename, $todir.'/'.$realname)) {
return $todir.'/'.$realname;
} else {
$error.= 'Системная ошибка;';
}
}
} else {
$error.= 'Файл отсутствует;';
}
}
?>
|
Форма
<input name="img" type="file">
|
Вызываем функцию. И хочется чтобы файл загрузился два разы. но не получается
<?
print uploadedFile('img', array("gif", "jpg", "png", "jpeg"), 'upload');
print uploadedFile('img', array("gif", "jpg", "png", "jpeg"), 'upload');
?>
|
Загружается только один | |
|
|
|
|
|
|
|
для: -sasha-
(12.10.2010 в 15:52)
| | Потому, что после перемещения временный файл удаляется. Делайте копию перемещенного, хоть 100 раз, и будет 100 файлов. Заключаем пари, что я обзову любой текстовый файл расширением jpg и вы его у себя сохраните? | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 16:12)
| | Вы имеете ввиду copy ?
А что Вам даст зто сохранение ? | |
|
|
|
|
|
|
|
для: -sasha-
(12.10.2010 в 16:29)
| | А что есть дургая функция для копирования файлов? Да copy(), но того файла, который вы уже переместили.
Мне ничего это не даст, а вам на сервере кучу мусора. | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 16:40)
| | Ладно. Попробуем. Спасибо.
у меня картинки дополнительно еще обрабатываются. никакого мусора не будет ;) | |
|
|
|
|
|
|
|
для: -sasha-
(12.10.2010 в 16:45)
| | И что, это оправдание для обработки мусора? А не лучше ли сразу узнать, что это мусор и не тратить зря ресурсы и время? | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 16:58)
| |
<?
$size = GetImageSize($file);
if (!($size)) {
print 'загружаемый вами файл имеет недопустимый формат.';
}
?>
|
| |
|
|
|
|
|
|
|
для: -sasha-
(12.10.2010 в 17:25)
| | Ну и зачем тогда эта хрень нужна:
$ext = substr($_FILES[$tmp]['name'], 1 + strrpos($_FILES[$tmp]['name'], "."));
| ? | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 17:27)
| | Потому что я не только картинки загружаю ;) | |
|
|
|
|
|
|
|
для: -sasha-
(12.10.2010 в 17:36)
| | Не видно, по крайней мере из тех значений массива, который вы передаете в функцию. Да и у прочих файлов, тип которых можно определить по их заголовку, нужно поступать именно так, а не верить магии .ext. | |
|
|
|
|
|
|
|
для: sim5
(12.10.2010 в 17:39)
| | Вы верно говорите. но расширений файлов много. и для них всех искать заголовки как то мне не охота.
Кстати COPY помогло. еще раз спасибо. | |
|
|
|
|
|
|
|
для: -sasha-
(12.10.2010 в 17:54)
| | Да делайте что хотите, мне от этого хуже что-ли.... | |
|
|
|