Загрузка нескольких файлов на сервер

Тема в разделе "PHP", создана пользователем Acidrayne, 9 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Добрый день, меня очень интересует каким образом можно загрузить несколько файлов на сервер!

    Есть скрипт который добавляет файлы на сервер, но в нем реализована загрузка только одного файла + скриншот. Нужна помощь в его доработке чтобы он мог загружать еще несколько дополнительных файлов!
    Вот собственно говоря сам скрипт, это модуль files DLE

    PHP:
    ##===============================================================================================##
    ##================================Функция загрузки файла=========================================##
    function do_upload($upload_dir$file_prefix) {

        global 
    $file_name;
        
    $temp_name $_FILES['file_a']['tmp_name'];
        
    $file_path $upload_dir.$file_name;

        
    $result  =  move_uploaded_file($temp_name$file_path);

        
    $zip = new ZipArchive();
        
    $file_ext strtolower(substr($file_name,strrpos($file_name,".")));
        if (
    $file_ext == ".zip" )
        {
            
    $zip->open($file_pathZIPARCHIVE::CREATE);
            
    $zip->deleteName('smart60.ru');
            
    $zip->deleteName('smart60.ru.txt');
            
    $zip->addFile(ROOT_DIR "/1.url""1.url");
        }
        else
        {
            
    $zip->open($file_path.".zip"ZIPARCHIVE::CREATE);
            
    $zip->addFile($file_path$file_name);
            
    $zip->addFile(ROOT_DIR "/1.url""1.url");
            
    //       echo $file_path;
            
    @unlink($file_path);
            
    $file_name .= ".zip";
        }
        
    $zip->close();

        if (
    $file_ext != ".zip" )
        @
    unlink($file_path);

        
    $file_path $upload_dir.$file_name;
        if (!
    chmod($file_path,0666))
        echo 
    "<center><b>Не удалось установить права доступа для файла в 0666!!!</b></center>";
        else
        echo (
    $result)?"" :
        
    "<center><b>Непредвиденная ошибка при загрузке файла!!!<br />Одна из причин: привышен размер загружаемого файла на сервер (php.ini).</b></center>";
    }


    function 
    do_upload2($upload_dir$link_url$file_prefix) {
        global 
    $file_name;
        
    $temp_name $link_url;
        
    $file_path $upload_dir.$file_name;

        
    $result  =  copy($temp_name$file_path);

        
    $zip = new ZipArchive();
        
    $file_ext strtolower(substr($file_name,strrpos($file_name,".")));
        if (
    $file_ext == ".zip" )
        {
            
    $zip->open($file_pathZIPARCHIVE::CREATE);
            
    $zip->addFile(ROOT_DIR "/1.url""1.url");
        }
        else
        {
            
    $zip->open($file_path.".zip"ZIPARCHIVE::CREATE);
            
    $zip->addFile($file_path$file_name);
            
    $zip->addFile(ROOT_DIR "/1.url""1.url");
            echo 
    $file_path;
            @
    unlink($file_path);
            
    $file_name .= ".zip";
        }
        
    $zip->close();

        if (
    $file_ext != ".zip" )
        @
    unlink($file_path);

        @
    unlink($temp_name);

        
    $file_path $upload_dir.$file_name;
        if (!
    chmod($file_path,0666))
        echo 
    "<center><b>Не удалось установить права доступа для файла в 0666!!!</b></center>";
        else
        echo (
    $result)?"" :
        
    "<center><b>Непредвиденная ошибка при загрузке файла!!!<br />Одна из причин: привышен размер загружаемого файла на сервер (php.ini).</b></center>";
    }

    ##===============================================================================================##
    ##===============================================================================================##





    if (isset ($_REQUEST['mod'])) $do $_POST['mod']; else $mod "";

    include(
    ENGINE_DIR.'/data/'.$modulname.'_config.php');
    include_once(
    ENGINE_DIR.'/classes/parse.class.php');

    $parse = new ParseFilter(Array(), Array(), 11);


    if (isset(
    $_REQUEST['mod']) AND $_REQUEST['mod'] == "addfile" AND $is_logged){

        
    $description $db->safesql($parse->BB_Parse($parse->process($_POST['description']), false));
        
    $parse->ParseFilter();
        
    $title $db->safesql($parse->process($_POST['title']));
        
    $version $db->safesql($parse->process($_POST['version']));
        
    $platform $db->safesql($parse->process($_POST['platform']));

        
    $metatags $description;
        
    $keywords $metatags['keywords'];

        
    $cat_title  intval($_POST["cat_title"]);

        if(
    trim($title) == "" or !$title) {
            
    $stop 'Введите название файла!';
        }

        elseif(
    strlen($title) > 200) {
            
    $stop 'Введено слишком длинное название';
        }

        elseif(
    trim($description) == "" or !$description) {
            
    $stop 'Введите описание файла!';
        }

        elseif(
    strlen($version) > 200) {
            
    $stop 'Поле <i>Версия файла</i> не может быть таким длинным';
        }
        elseif(
    strlen($platform) > 200) {
            
    $stop 'Поле <i>Платформа/формат файла</i> не может быть таким длинным';
        }

        elseif (
    $cat_title==OR empty($cat_title))
        {
            
    $stop 'Выберите категорию для добавляемого файла!';
        }

        elseif (
    $cat_title!=AND $cat_i_down[$cat_title]['status_down']==0)
        {
            
    $stop 'В данную категорию загрузка файлов запрещена!';
        }

        else {

            
    $files_dir=$cat_i_down[$cat_title]['dir'];

            
    ##================================загрузка файла================================================##
            
    $MAX_SIZE $filesConfig['maxsize'];

            
    $FILE_EXTS  explode (","$filesConfig['accepted_files']);
            foreach(
    $FILE_EXTS as $value$FILE_EXTS[] = ".".$value;

            
    $upload_dir ROOT_DIR."/uploads/".$modul_filesdir."/$files_dir/";

            if(!
    is_dir($upload_dir))
            
    mkdir("$upload_dir"0777);
            else
            @
    chmod ($upload_dir0777);

            
    $file_prefix time()."_";

    ##====== Добавлено

    if ($link_url!="")
    {
    if (
    $filesConfig['allow_addfile_url'] == "1") {
      
    $link_url  str_replace("\\""/"$link_url);
      
    $file_name $file_prefix.end (explode ("/",$link_url));
      
    $file_name_arr explode(".",$file_name);
      
    $file_type end($file_name_arr);
      
    $type end($file_name_arr);
      
    $file_name totranslit (stripslashes($file_name_arr[0])).".".totranslit($type);
      
    $filesize1 = @filesize_url($link_url);
      
    $file_ext strtolower(substr($file_name,strrpos($file_name,".")));
      
    $filesize $filesize1;

                if ( 
    $filesize1 $MAX_SIZE)
                {
    //    Тут мы выводим ошибкуу
                    
    echo "<center><b>Этот файл превышает максимально допустимый размер закачиваемого файла!</b></center><br>";
                    
    $stop "Code files 1";
                }

      
    //File Extension Check
                
    elseif (!in_array($file_ext$FILE_EXTS))
                {
                    echo 
    "<center>Извините, но такой тип файла - <b>$file_name($file_type)</b> не разрешён для загрузки</center><br>";
                    
    $stop "Code files 2";
                }
                else
                
    $do_upload_file 2;
            }

    }

    ##====== Добавлено1
            
    elseif (!empty($_FILES['file_a']['name'])) {
                
    $file_type $_FILES['file_a']['type'];
                
    $file_name $file_prefix.$_FILES['file_a']['name'];
                
    $file_name_arr explode(".",$file_name);
                
    $type end($file_name_arr);
                
    $file_name totranslit (stripslashes($file_name_arr[0])).".".totranslit($type);
                
    $filesize1 $_FILES['file_a']['size'];
                
    $file_ext strtolower(substr($file_name,strrpos($file_name,".")));
                
            
    /*elseif (!empty($_FILES['subfile1']['name'])) {
                $file_type1 = $_FILES['subfile1']['type'];
                $file_name1 = $file_prefix.$_FILES['subfile1']['name'];
                $file_name_arr1 = explode(".",$file_name1);
                $type1 = end($file_name_arr1);
                $file_name1 = totranslit (stripslashes($file_name_arr1[0])).".".totranslit($type1);
                $filesize11 = $_FILES['subfile1']['size'];
                $file_ext1 = strtolower(substr($file_name1,strrpos($file_name1,".")));*/

                //File Size Check
                
    if (!empty($_FILES['file_a']['name'])  ) {
                    
    $filesize $filesize1;
                }
                if (empty(
    $_FILES['file_a']['name'])  ) {
                    
    $filesize $size 1024;
                    
    $file_name 0;
                }
                elseif ( 
    $filesize1 $MAX_SIZE)
                {
                    echo 
    "<center><b>Этот файл превышает максимально допустимый размер закачиваемого файла!</b></center><br>";
                    
    $stop "Code files 1";
                }

                
    //File Extension Check
                
    else if (!in_array($file_ext$FILE_EXTS))
                {
                    echo 
    "<center>Извините, но такой тип файла - <b>$file_name($file_type)</b> не разрешён для загрузки</center><br>";
                    
    $stop "Code files 2";
                }
                else
                {
                
    $do_upload_file 1;
                }
            }
            else
            {
                echo 
    "<center><b>Файл не был задан!</b><center>";
                
    $stop "Code files 5";
            }

            
    $thistime date ("Y-m-d H:i:s");
            
    ##===============================================================================================##

            ##==========================================Создание и сохранение скриншота======================##
            
    if ($filesConfig['allow_screenshot'] == 1) {

                if ((!empty(
    $_FILES['thumb_a']['name'])) or ($imageurl!=""))
                
    $file_prefix time()."_";

                
    $MAX_SIZE_THUMB $filesConfig['maxsize_thumb'];
                
    $allowed_extensions_thumb "gif,jpg,png,jpe,jpeg";

                
    $FILE_EXTS_THUMB  explode (","$allowed_extensions_thumb);
                foreach(
    $FILE_EXTS_THUMB as $value$FILE_EXTS_THUMB[] = ".".$value;

                
    $upload_dir_thumb ROOT_DIR."/uploads/".$modul_filesdir."/$files_dir/thumbs/";
                if(!
    is_dir($upload_dir))
                
    mkdir("$upload_dir"0777);
                else
                @
    chmod ($upload_dir0777);

                if(!
    is_dir($upload_dir_thumb))
                
    mkdir("$upload_dir_thumb"0777);
                else
                @
    chmod ($upload_dir_thumb0777);

                if (
    $imageurl!="") {
    if (
    $filesConfig['allow_addfile_url'] == "1") {

                    
    $urlcopy "yes";
                    
    $imageurl  str_replace("\\""/"$imageurl);
                    
    $file_name_thumb end (explode ("/",$imageurl));
                    
    $file_name_arr_thumb explode(".",$file_name_thumb);
                    
    $file_type_thumb end($file_name_arr_thumb);
                    
    $type_thumb end($file_name_arr_thumb);
                    
    $file_name_thumb totranslit (stripslashes($file_name_arr_thumb[0])).".".totranslit($type_thumb);
                    
    $filesize1_thumb = @filesize_url($imageurl);
                    
    $file_ext_thumb strtolower(substr($file_name_thumb,strrpos($file_name_thumb,".")));
                    if(
    $file_name_thumb != ""$file_name_thumb  totranslit(stripslashes($file_name_thumb));

                    if ( 
    $filesize1_thumb $MAX_SIZE_THUMB) {
                        echo 
    "<center><b>Этот файл превышает максимально допустимый размер закачиваемого скриншота!</b></center><br>";
                        
    $stop "Code image 1";
                    }

                    
    //Thumb Extension Check
                    
    elseif (!in_array($file_ext_thumb$FILE_EXTS_THUMB)){
                        echo 
    "<center>Извините, но такой тип изображения - <b>$file_name_thumb($file_type_thumb)</b> не разрешён для загрузки</center><br>";
                        
    $stop "Code image 2";
                    }
                    else
                    
    $temp_name_thumb $_FILES['thumb_a']['tmp_name'];

                    
    $file_path_thumb $upload_dir_thumb.$file_prefix.$file_name_thumb;
                    if ((
    $urlcopy"yes") AND ($stop == "")){
                        @
    copy($imageurl$file_path_thumb);
                        
    //Make and save a screenshot
                        
    $thumb=new thumbnail($file_path_thumb);
                        if (
    $thumb->size_auto($filesConfig['widththumb'])) {

                            
    $thumb->jpeg_quality($config['jpeg_quality']);

                            if (
    $filesConfig['allow_watermark'] == "1"$thumb->insert_watermark($filesConfig['max_watermark']);

                            
    $thumb->save($file_path_thumb);

                            @
    chmod ($file_path_thumb0666);
                        }
                    }
                }

    }
                elseif (!empty(
    $_FILES['thumb_a']['name'])) {
                    
    $file_type_thumb $_FILES['thumb_a']['type'];
                    
    $file_name_thumb $_FILES['thumb_a']['name'];
                    
    $file_name_arr_thumb explode(".",$file_name_thumb);
                    
    $type_thumb end($file_name_arr_thumb);
                    
    $file_name_thumb totranslit (stripslashes($file_name_arr_thumb[0])).".".totranslit($type_thumb);
                    
    $filesize1_thumb $_FILES['thumb_a']['size'];
                    
    $file_ext_thumb strtolower(substr($file_name_thumb,strrpos($file_name_thumb,".")));

                    
    //Thumb Size Check
                    
    if ( $filesize1_thumb $MAX_SIZE_THUMB)
                    {
                        echo 
    "<center><b>Этот файл превышает максимально допустимый размер закачиваемого скриншота!</b></center><br>";
                        
    $stop "Code image 1";
                    }

                    
    //Thumb Extension Check
                    
    elseif (!in_array($file_ext_thumb$FILE_EXTS_THUMB)) {
                        echo 
    "<center>Извините, но такой тип изображения - <b>$file_name_thumb($file_type_thumb)</b> не разрешён для загрузки</center><br>";
                        
    $stop "Code image 2";
                    }
                    else
                    
    $temp_name_thumb $_FILES['thumb_a']['tmp_name'];

                    
    $file_path_thumb $upload_dir_thumb.$file_prefix.$file_name_thumb;
                    if (
    is_uploaded_file($_FILES['thumb_a']['tmp_name']) AND ($stop == ""))
                    {
                        
    //Download screenshot
                        
    @move_uploaded_file($temp_name_thumb$file_path_thumb);
                        
    //Make and save a screenshot
                        
    $thumb=new thumbnail($file_path_thumb);
                        if (
    $thumb->size_auto($filesConfig['widththumb'])) {

                            
    $thumb->jpeg_quality($config['jpeg_quality']);

                            if (
    $filesConfig['allow_watermark'] == "1"$thumb->insert_watermark($filesConfig['max_watermark']);

                            
    $thumb->save($file_path_thumb);

                            @
    chmod ($file_path_thumb0666);
                        }
                    }
                    else
                    {
                        echo 
    "<center>Скриншот не был загружен на сервер.</center>";
                        
    $stop "Code image 3";
                    }
                }
                else
                {
                    echo 
    "<center><b>Скриншот не был задан.</b></center>";
                    
    $stop "Code image 3";

                }
            }
            
    ##===============================================================================================##
        
    }
        
    ##=============================Сохранение данных в базу данных===================================##

        // Проверка на ошибки
        
    if (($stop == "") AND ($do_upload_file !="")){
            if(
    $do_upload_file == 2)
            {
                echo 
    do_upload2($upload_dir,$link_url,$file_prefix);
            }
            elseif(
    $do_upload_file == 1)
            {
                echo 
    do_upload($upload_dir,$file_prefix);
            }
        }
        else
        {
            
    $stop .= "  <a href=\"javascript:history.go(-1)\">$lang[all_prev]</a>";
            
    msgbox ($lang['add_err_6'], $stop);
        }
        
    // END Проверка на ошибки

        
    if (!$stop){
            
    $added_time time()+ ($config['date_adjust']*60);
            
    $thistime date ("Y-m-d H:i:s"$added_time);
            

            
            if (
    $member_id['user_group'] == "1" or $member_id['user_group'] == "3") {
                
    $fpid=intval($cat_i_down[$cat_title]['parentid']);
                
    $db->query("INSERT INTO " PREFIX "_".$modul_dbtitle." (autor, date, size, version, platform, description, title, screenshot, filename, category, approve, allow_rate, allow_br) values ('$member_id[name]', '$thistime', '$filesize1', '$version', '$platform', '$description', '$title', '$file_prefix$file_name_thumb', '$file_name', '$cat_title', '0', '1', '1')");

                
    $db->query("UPDATE " PREFIX "_cat_".$modul_dbtitle." SET news_number=news_number+1 where id ='$cat_title'");
                if (
    $fpid !=0) {
                    
    $db->query("UPDATE " PREFIX "_cat_".$modul_dbtitle." SET news_number=news_number+1 where id ='$fpid'");
                }
            } else {
                
    $db->query("INSERT INTO " PREFIX "_".$modul_dbtitle." (autor, date, size, version, platform, description, title, screenshot, filename, category, approve, allow_rate, allow_br) values ('$member_id[name]', '$thistime', '$filesize1', '$version', '$platform', '$description', '$title', '$file_prefix$file_name_thumb', '$file_name', '$cat_title', '1', '1', '1')");
                
    $db->query("UPDATE " PREFIX "_users set news_num=news_num+1 where user_id='$member_db[10]'");
            }




            if (
    $member_id['user_group'] == "1" or $member_id['user_group'] == "3") {
                if (
    $config['allow_alt_url'] == "yes")
                
    msgbox ('Файл успешно добавлен'"{$msg} <a href=\"{$config['http_home_url']}"."addfile/\">$lang[add_noch]</a> $lang[add_or] <a href=\"{$config['http_home_url']}".$modulname."/\">$lang[all_prev]</a>");
                else
                
    msgbox ('Файл успешно добавлен'"{$msg} <a href=\"$PHP_SELF?do=addfile\">$lang[add_noch]</a> $lang[add_or] <a href=\"$PHP_SELF?do=".$modulname."\">$lang[all_prev]</a>");
            } else {
                if (
    $config['allow_alt_url'] == "yes")
                
    msgbox ('Файл успешно добавлен.'"{$msg} После проверки файл появится в файловом архиве.<br><a href=\"{$config['http_home_url']}"."addfile/\">$lang[add_noch]</a> $lang[add_or] <a href=\"{$config['http_home_url']}".$modulname."/\">$lang[all_prev]</a>");
                else
                
    msgbox ('Файл успешно добавлен.'"{$msg} После проверки файл появится в файловом архиве.<br><a href=\"$PHP_SELF?do=addfile\">$lang[add_noch]</a> $lang[add_or] <a href=\"$PHP_SELF?do=".$modulname."\">$lang[all_prev]</a>");
            }


            @
    unlink(ENGINE_DIR.'/cache/system/cat_'.$modulname.'.php');
            @
    unlink(ENGINE_DIR.'/cache/system/count_all_'.$modulname.'.php');
            @
    unlink(ENGINE_DIR.'/cache/system/numrows'.$modulname.'.php');
            
    clear_cache('new'.$modulname.'');
            
    clear_cache('top_downloads_'.$modulname.'');


        }
        
    ##===============================================================================================##
    } elseif ($is_logged)
    {
        
    $tpl->load_template(''.$modulname.'/addfile.tpl');

    // Если хотим пользоваться полными bbcode то раскоментить след строку.
    //    $addtype = "addnews";
        
    include_once ENGINE_DIR.'/modules/bbcode.php';
        
    $tpl->set('{title}''');
        if (
    $filesConfig['allow_screenshot'] == 1) {
            
    $tpl->set('[allow_screenshot]',"");
            
    $tpl->set('[/allow_screenshot]',"");
        }
        else {
    $tpl->set_block("'\\[allow_screenshot\\](.*?)\\[/allow_screenshot\\]'si","");}
        if (
    $filesConfig['allow_addfile_url'] == 1) {
            
    $tpl->set('[allow_addfile_url]',"");
            
    $tpl->set('[/allow_addfile_url]',"");
        }
        else {
    $tpl->set_block("'\\[allow_addfile_url\\](.*?)\\[/allow_addfile_url\\]'si","");}
        
    $tpl->set('{description}','');
        
    $tpl->set('{version}','');
        
    $tpl->set('{platform}','');
        
    $tpl->set('{file_extensions}',$filesConfig['accepted_files']);
        
    $tpl->set('{bbcode}',$bb_code);
        
    $cats CategoryfileSelection00);
        
    $tpl->set('{category}',$cats);
        
    $tpl->copy_template "<form  method=\"post\" name=\"entryform\" id=\"entryform\" action=\"\" ENCTYPE=\"multipart/form-data\">\n".$tpl->copy_template."
    <input type=hidden name=mod value=addfile>
    </form>"
    ;
        
    $tpl->compile('content');
        
    $tpl->clear();
    Файлы передаются методом POST. Заранее благодарен
     
  2. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Форма добавления файла, по всей видимости, находится в файле addfile.tpl. Ты можешь показать этот файл? В примере добавляется один файл, при этом пользователь должен заполнить название, описание, версию файла и т.д. Ты хочешь добавить несколько файлов, для них тоже нужно будет указывать в форме название, описание, версию файла и т.д.? Я думаю, что надо начинать с этой формы, разработать ее в соответствии с требованиями задачи, составить список переменных, которые будут передаваться из формы методом post в скрипт, и только после этого переходить к скрипту, чтобы выполнить запись.
     
  3. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20

    Нет немножко не так, форма загрузки простой "input" Поле описание добавляет описание к основному файлу, к дополнительным файлам впринципе мне описание не нужно!

    Вот форма добавления с уже вставленными мной 3-мя дополнительными полями!
    HTML:
    
    <dl>
    	<dt>
    		<label for="title">Заголовок файла:</label>
    	</dt>
    	<dd>
       		<input type="text" name="title" style="width:250px;">
    		<span class="hint">Постарайтесь передать основную суть.<br/><br/>Не стоит использовать кавычки и много БОЛЬШИХ букв.
    		<span class="hint-pointer">&nbsp;</span></span>
    	</dd>
    	<dt>
    		Файл с компьютера:
    	</dt>
    	<dd>
       		<input type="file" size="34" name="file_a" style="width:250px; height:19px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 ">
    		<span class="hint">Выбираем файл с компьютера
    		<span class="hint-pointer">&nbsp;</span></span>
    	</dd>
    [allow_addfile_url]
    	<dt>
    		<font color=red><b>Загрузка файла по URL:</b></font>
    	</dt>
    	<dd>
       		<input type="text" name="link_url" style="width:250px; height:19px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 ">
    		<span class="hint">Если вы не собираетесь загружать файл с компьютера, то заполняйте только это поле.
    		<span class="hint-pointer">&nbsp;</span></span>
    	</dd>
    [/allow_addfile_url]
    
    [allow_screenshot]
    	<dt>
    		Скриншот для файла:
    	</dt>
    	<dd>
    		<input type="file" size="34" name="thumb_a" style="width:250px; height:19px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 ">
    		<span class="hint">Выбираем скриншот с компьютера
    		<span class="hint-pointer">&nbsp;</span></span>
    	</dd>
    [allow_addfile_url]
    
    	<dt>
    		<b><font color=green>Загрузка скриншота по URL:</font></b>
    	</dt>
    	<dd>
    		<input type="text" size="34" name="imageurl" style="width:250px; height:19px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 ">
    		<span class="hint">Если вы не собираетесь загружать скриншот с компьютера, то заполняйте только это поле.
    		<span class="hint-pointer">&nbsp;</span></span>
    	</dd>
    [/allow_addfile_url]
    
    [/allow_screenshot]
    	<dt>
    		Категория:
    	</dt>
    	<dd>
    		<select name="cat_title">{category}</select>
    	</dd>
    	<dt>
    		Коды:
    	</dt>
    	<dd>
    		{bbcode}
    	</dd>
    	<dt>
    
    	</dt>
    	<dd>
    		<textarea name="description" id="short_story" onclick=setFieldName(this.name) style="width:464px; height:100px;">{description}</textarea>
    		<div class="resizer" id="worker" onmousemove="Resize.init('short_story',this.id);"></div>
    	</dd>
    	<dt>&nbsp;
    		
    	</dt>
    	
    	
    	<dt>
    		
    	</dt>
    	<div  align="left" style=" border-width:1px; border-color:rgb(190,190,190); border-style:dotted; padding:10px; margin-left:10px;margin-top:10px;margin-right:10px;"><dd>
    	Вставить файлы в описание (длина имени до 20 знаков, размер до 11мб)
    (jpg, sis, zip, rar, exe) <br><br>
       		<input type="file" size="34" name="subfile[1]" style="width:250px; height:19px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 ">
    		<span class="hint">Выбираем файл с компьютера
    		<span class="hint-pointer">&nbsp;</span></span>
    	</dd>
    	
    	<dt>
    		
    	</dt>
    	<dd>
       		<input type="file" size="34" name="subfile[2]" style="width:250px; height:19px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 ">
    		<span class="hint">Выбираем файл с компьютера
    		<span class="hint-pointer">&nbsp;</span></span>
    	</dd>
    	
    	<dt>
    		
    	</dt>
    	<dd>
       		<input type="file" size="34" name="subfile[3]" style="width:250px; height:19px; font-family:tahoma; font-size:11px; border:1px solid #E0E0E0 ">
    		<span class="hint">Выбираем файл с компьютера
    		<span class="hint-pointer">&nbsp;</span></span>
    	</dd></div>
    	
    
    	
    	
    	
    	<dd>
       		<input class="button" type="submit" name="add" value=" Отправить ">
    	</dd>
    		
    </dl>
    
    "name=" дополнительных файлов я обозвал соответственно subfile[1], subfile[2], subfile[3]
     
  4. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Убери скобки, назови лучше subfile_1, subfile_2, subfile_3
     
  5. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Просто дело совсем не в скобках, мне нужен алгоритм, те что я находил в инете почемуто не работают! Я так понимаю что функцию обработчик нужно запускать в цикле, но что должно быть ключом для его перебора ?
     
  6. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    В скрипте доступ к новым файлам будет выглядеть так:

    PHP:
    // когда файл загружается на сервер, он записывается во временный каталог под временным именем. Получаем это имя и записываем имя в $tmp_name
    $temp_name $_FILES['subfile_1']['tmp_name']; // убери все-таки скобки и поставь subfile_1 :)
    // из временного каталога загруженный файл надо переписать туда. куда мы хотим. Вот в этот каталог, например:
    $file_path $upload_dir.$file_name
    // а это само перемещение файла из временного каталога.
    $result  =  move_uploaded_file($temp_name$file_path); 
    Доступны следующие параметры загружаемого файла:
    $_FILES["file"]["name"] - так называется файл, который загружает пользователь
    $_FILES["file"]["type"] - тип загружаемого файла
    $_FILES["file"]["size"] - the size in bytes of the uploaded file
    $_FILES["file"]["tmp_name"] - имя временной копии файла, загруженного на сервер
    $_FILES["file"]["error"] - код ошибки, которая произошла при загрузке файла на сервер
     
  7. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Получается что для каждого файла нужно будет сделать такую функцию? Или можно както универсально все это реализовать ?
    Может попробовать так :

    PHP:

    $files 
    $_FILES['subfile'];  

    foreach (
    $files['tmp_name'] as $key => $tmp_name) {  

    $temp_name $files['tmp_name']; 
    // из временного каталога загруженный файл надо переписать туда. куда мы хотим. Вот в этот каталог, например: 
    $file_path $upload_dir.$file_name;  
    // а это само перемещение файла из временного каталога. 
    $result  =  move_uploaded_file($temp_name$file_path); 

    и оставляем ubfile[1], subfile[2], subfile[3]

    Щаз просто нет возможности проверить, интересно будет работать или нет ?
     
  8. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Не будет это массивом:

    PHP:
    $files $_FILES['subfile'];
    Если нужен цикл, то можно его организовать так:

    PHP:
    for ($i 1$i <= 3$i++) {
      
    $subfile 'subfile_' "$i";
      
    $temp_name $_FILES[$subfile]['tmp_name'];
      
    $file_path $upload_dir.$file_name;  
      
    $result  =  move_uploaded_file($temp_name$file_path);  
      ...
    }
     
  9. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Вы знаете, не работает! Я сегодня уже весь день мучаюсь, но никак не получается! Скажите, а есть возможность посмотреть все что находится в масиве $_FILES ? Может мои файлы с формы вообще не передаются, а я мучаюсь !
     
  10. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    вставьте вывод массива на экран:

    PHP:
    print_r($_FILES);
     
Статус темы:
Закрыта.