Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> upload файлов 
V
    Опции темы
studentigor
Дата 17.1.2012, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



всем привет.
делаю загрузку файлов.
есть 2 формы, 1 - загружает 1 файл, другая - 7.

так вот та что 1, работает норм.
вторая же из 7 гр загружает 3, если задаю больше то массив $_FILES пустой. никаких ошибок не выдает
версия РНР 5.2.12, max_file_uploads - 20 файлов, upload_max_filesize - 20 метров.

вот форма
Код

$str = '<form enctype="multipart/form-data" method="post">
    <input type="hidden" name="action" value="add_row" /><table>';
    $str .= '<tr><td>'.$arr['main_photo'].'</td><td><input type="file" name="main_photo" id="main_photo" value="" /></td></tr>';
    $str .= '<tr><td rowspan="6" valign="top">'.$arr['additional_photo'].'</td><td><input type="file" name="a_ph[]" id="a_ph_0" value="" /></td></tr>';
    for($i=1;$i<5;$i++){
        $str .= '<tr><td><input type="file" name="a_ph[]" id="a_ph_'.$i.'" value="" /></td></tr>';
    }
    $str .= '<tr><td>'.$arr['url'].'</td><td><input type="text" size="30" name="url" id="url" value="" /></td></tr>';
    $str .= '<tr><td>'.$arr['type'].'</td><td><input type="text" name="type" id="type" value="" /></td></tr>';
    $str .= '<tr><td>'.$arr['category'].'</td><td><input type="text" name="cate" id="cate" value="" /></td></tr>';
    $str .= '<tr><td colspan="2" align="center"><input type="submit" value="сохранить" />
            </td></tr>';
    $str .='</table></form>';


вот скрипт
Код

if(isset($_FILES["main_photo"])){
                if(is_uploaded_file($_FILES["main_photo"]["tmp_name"])){
                    move_uploaded_file($_FILES["main_photo"]["tmp_name"], $name_dir.iconv('utf-8','windows-1251',$_FILES["main_photo"]["name"]));
                 $kl++;
                }
                else{echo("Ошибка загрузки главного фото");}
            }
            if(isset($_FILES["a_ph"])){
                if(is_uploaded_file($_FILES["a_ph"]["tmp_name"][0]) or is_uploaded_file($_FILES["a_ph"]["tmp_name"][1])
                and is_uploaded_file($_FILES["a_ph"]["tmp_name"][2]) or is_uploaded_file($_FILES["a_ph"]["tmp_name"][3])
                and is_uploaded_file($_FILES["a_ph"]["tmp_name"][4]) or is_uploaded_file($_FILES["a_ph"]["tmp_name"][5])){
                  move_uploaded_file($_FILES["a_ph"]["tmp_name"][0], $name_dir.iconv('utf-8','windows-1251',$_FILES["a_ph"]["name"][0]));
                  move_uploaded_file($_FILES["a_ph"]["tmp_name"][1], $name_dir.iconv('utf-8','windows-1251',$_FILES["a_ph"]["name"][1]));
                  move_uploaded_file($_FILES["a_ph"]["tmp_name"][2], $name_dir.iconv('utf-8','windows-1251',$_FILES["a_ph"]["name"][2]));
                  move_uploaded_file($_FILES["a_ph"]["tmp_name"][3], $name_dir.iconv('utf-8','windows-1251',$_FILES["a_ph"]["name"][3]));
                  move_uploaded_file($_FILES["a_ph"]["tmp_name"][4], $name_dir.iconv('utf-8','windows-1251',$_FILES["a_ph"]["name"][4]));
                  move_uploaded_file($_FILES["a_ph"]["tmp_name"][5], $name_dir.iconv('utf-8','windows-1251',$_FILES["a_ph"]["name"][5]));
                  $kl++;
                }
                else{
                    echo("Ошибка загрузки файла таблиц нормочасов");
                }
                if($kl>0){
                    echo '<div align="center">Данные успешно обновлены</div>';
                }
            }


посмотрите пожалуйста, мож у кто знает почему, или увидел ошибку, которая к этому приводит.
PM MAIL   Вверх
N_Ghost
Дата 17.1.2012, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



Что это за ужас?
Код

// form.php

<form enctype="multipart/form-data" method="post" action="upload.php">
<?php 
for ($i = 0; $i <= 6; $i++){
  echo '<input type="file" name="a_ph[]" value="" /><br />';
}
?>
<input type="submit" />
</form>


Код

// upload.php

<?php
foreach($_FILES['a_ph']['tmp_name'] as $k=>$v){
move_uploaded_file($v, 'dir/'.md5(microtime()));
}
echo 'Files Uploaded!';

?>

PM MAIL   Вверх
Sanchezzz
Дата 17.1.2012, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



почему люди всегда делают так сложно.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Sanchezzz
Дата 17.1.2012, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Код

/*
    $source - название поля
    $todir  - куда сохранять файл
    $genName генерация имени файла итд...
*/
function moveUploadMulti($source , $todir , $genName =  true  ) {
    
    // Генерация имени файла
    function genFileName($ext = ''){
        $new_name  = str_replace(',','', microtime() );
        $new_name  = str_replace('.','', $new_name );
        $new_name  = str_replace(' ','', $new_name ); 
        $new_name .= date('dmYs');
        return ($ext!='') ? $new_name . ".".$ext : $new_name;
    }

    $todir.="/";
    $load = false;
    $result = array();
    //если мы отправляли файлы как массив файлов 
    if( is_array($_FILES[$source]["tmp_name"]) ){
        foreach($_FILES[$source]["tmp_name"] as $key=> $filename):
            
            if(is_uploaded_file($_FILES[$source]["tmp_name"][$key])){
                $ext = pathinfo($_FILES[$source]['name'][$key]);
                //    Генерация файла        
                if($genName==true){ //числовой
                    $new_filename = genFileName($ext['extension']);
                }
                else if(is_string($genName ) && strtolower($genName) =='md5' ){ //хеш числа
                    $new_filename = genFileName($ext['extension']);
                    $new_filename = md5($new_filename) . "." . $ext['extension'];
                }
                else if( is_string( $genName ) ){ //заданный самим
                    $new_filename = $genName;
                }else{ //взять оригинальное имя файла
                    $new_filename = $_FILES[$source]['name'][$key];
                }
                
                if(move_uploaded_file($filename, str_replace('//', '/', $todir  . $new_filename ) )  ) {
                    $result[$key] = array('filename'=> $new_filename  , 'error'=>'File successful uploaded');
                } else {
                        $result[$key] = array('filename'=>'', 'error'=>'Error: moving file failed');
                };
            
            }else $result[$key] = array('filename'=>'', 'error'=>'Error: empty file');    
        endforeach;
        
    }else{
        if(!empty($_FILES[$source]))
            if(is_uploaded_file($_FILES[$source]["tmp_name"])){
                $filename = $_FILES[$source]['tmp_name'];
                $ext  = pathinfo($_FILES[$source]['name']);
                
                //    Генерация файла        
                if($genName==true){ //числовой
                    $new_filename = genFileName($ext['extension']);
                }
                else if(is_string($genName ) && strtolower($genName) =='md5' ){ //хеш числа
                    $new_filename = genFileName($ext['extension']);
                    $new_filename = md5($new_filename) . "." . $ext['extension'];
                }
                else if( is_string( $genName ) ){ //заданный самим
                    $new_filename = $genName;
                }else{ //взять оригинальное имя файла
                    $new_filename = $_FILES[$source]['name'][$key];
                }

                if(move_uploaded_file($filename, str_replace('//', '/', $todir  . $new_filename ) )  ) {
                    return array('filename'=> $new_filename  , 'error'=>'File successful uploaded');
                } else {
                    return array('filename'=>'', 'error'=>'Error: moving file failed');
                }
            }else{
                return array('filename'=>'', 'error'=>'Error: empty file');
            };
    }
    return $result;
}

Вроде должно работать  smile 


Это сообщение отредактировал(а) Sanchezzz - 18.1.2012, 06:13


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
studentigor
Дата 17.1.2012, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



спасибо конечно, но тот кусок у меня работает.
загвозка в том что когда я пытаюсь загрузить больше трех файлов - у меня массив $_FILES пустой.
 если до  трех включительно - все работает.

PM MAIL   Вверх
N_Ghost
Дата 17.1.2012, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



а ты проверь что возвращает var_dump($_FILES), без дополнительных условий.
у тебя идут какие то дикие проверки, возможно в них ошибка и есть.
PM MAIL   Вверх
MoLeX
Дата 17.1.2012, 18:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Sanchezzz)

Код

        $new_name  = str_replace(',','', microtime() );
        $new_name  = str_replace('.','', $new_name );
        $new_name  = str_replace(' ','', $new_name ); 
        $new_name .= date('dmYs');


Цитата(Sanchezzz @  17.1.2012,  14:38 Найти цитируемый пост)
почему люди всегда делают так сложно. 

это сложный вопрос)))


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
studentigor
Дата 17.1.2012, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



N_Ghost возвращает 0.

проверки - то уже потом, до проверки должен быть массив $_FILES, а он пустой
PM MAIL   Вверх
$дмитрий
Дата 17.1.2012, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Код

$ext = $ext = pathinfo($_FILES[$source]['name']);

smile 

studentigor, попробуй загрузить множество небольших файлов по 10-20 KB и сообщи результат
PM MAIL   Вверх
studentigor
Дата 18.1.2012, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 397
Регистрация: 14.11.2008

Репутация: нет
Всего: нет



хм. загрузились.

спасиба за мыслю.

в общем у меня был маленький размер массива $_POST

спасибо большое.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0805 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.