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

Форум PHP

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

 

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

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

тема: Загрузка одного файла несколько раз
 
 автор: -sasha-   (12.10.2010 в 15:52)   письмо автору
 
 

Добрый день.

Есть функция загрузки файлов

<?
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'], 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');
?>


Загружается только один

  Ответить  
 
 автор: sim5   (12.10.2010 в 16:12)   письмо автору
 
   для: -sasha-   (12.10.2010 в 15:52)
 

Потому, что после перемещения временный файл удаляется. Делайте копию перемещенного, хоть 100 раз, и будет 100 файлов. Заключаем пари, что я обзову любой текстовый файл расширением jpg и вы его у себя сохраните?

  Ответить  
 
 автор: -sasha-   (12.10.2010 в 16:29)   письмо автору
 
   для: sim5   (12.10.2010 в 16:12)
 

Вы имеете ввиду copy ?

А что Вам даст зто сохранение ?

  Ответить  
 
 автор: sim5   (12.10.2010 в 16:40)   письмо автору
 
   для: -sasha-   (12.10.2010 в 16:29)
 

А что есть дургая функция для копирования файлов? Да copy(), но того файла, который вы уже переместили.

Мне ничего это не даст, а вам на сервере кучу мусора.

  Ответить  
 
 автор: -sasha-   (12.10.2010 в 16:45)   письмо автору
 
   для: sim5   (12.10.2010 в 16:40)
 

Ладно. Попробуем. Спасибо.

у меня картинки дополнительно еще обрабатываются. никакого мусора не будет ;)

  Ответить  
 
 автор: sim5   (12.10.2010 в 16:58)   письмо автору
 
   для: -sasha-   (12.10.2010 в 16:45)
 

И что, это оправдание для обработки мусора? А не лучше ли сразу узнать, что это мусор и не тратить зря ресурсы и время?

  Ответить  
 
 автор: -sasha-   (12.10.2010 в 17:25)   письмо автору
 
   для: sim5   (12.10.2010 в 16:58)
 


<?
$size 
GetImageSize($file);
if (!(
$size))  { 
        print 
'загружаемый вами файл имеет недопустимый формат.'
}
?>

  Ответить  
 
 автор: sim5   (12.10.2010 в 17:27)   письмо автору
 
   для: -sasha-   (12.10.2010 в 17:25)
 

Ну и зачем тогда эта хрень нужна:
$ext = substr($_FILES[$tmp]['name'], 1 + strrpos($_FILES[$tmp]['name'], "."));
?

  Ответить  
 
 автор: -sasha-   (12.10.2010 в 17:36)   письмо автору
 
   для: sim5   (12.10.2010 в 17:27)
 

Потому что я не только картинки загружаю ;)

  Ответить  
 
 автор: sim5   (12.10.2010 в 17:39)   письмо автору
 
   для: -sasha-   (12.10.2010 в 17:36)
 

Не видно, по крайней мере из тех значений массива, который вы передаете в функцию. Да и у прочих файлов, тип которых можно определить по их заголовку, нужно поступать именно так, а не верить магии .ext.

  Ответить  
 
 автор: -sasha-   (12.10.2010 в 17:54)   письмо автору
 
   для: sim5   (12.10.2010 в 17:39)
 

Вы верно говорите. но расширений файлов много. и для них всех искать заголовки как то мне не охота.

Кстати COPY помогло. еще раз спасибо.

  Ответить  
 
 автор: sim5   (12.10.2010 в 17:56)   письмо автору
 
   для: -sasha-   (12.10.2010 в 17:54)
 

Да делайте что хотите, мне от этого хуже что-ли....

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

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