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

Статус
В этой теме нельзя размещать новые ответы.

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_path, ZIPARCHIVE::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_path, ZIPARCHIVE::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(), 1, 1);


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==0 OR empty($cat_title))
	{
		$stop = 'Выберите категорию для добавляемого файла!';
	}

	elseif ($cat_title!=0 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_dir, 0777);

		$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_dir, 0777);

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

			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_thumb, 0666);
					}
				}
			}

}
			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_thumb, 0666);
					}
				}
				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 = CategoryfileSelection( 0, 0);
	$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. Заранее благодарен
 
Форма добавления файла, по всей видимости, находится в файле addfile.tpl. Ты можешь показать этот файл? В примере добавляется один файл, при этом пользователь должен заполнить название, описание, версию файла и т.д. Ты хочешь добавить несколько файлов, для них тоже нужно будет указывать в форме название, описание, версию файла и т.д.? Я думаю, что надо начинать с этой формы, разработать ее в соответствии с требованиями задачи, составить список переменных, которые будут передаваться из формы методом post в скрипт, и только после этого переходить к скрипту, чтобы выполнить запись.
 
Форма добавления файла, по всей видимости, находится в файле addfile.tpl. Ты можешь показать этот файл? В примере добавляется один файл, при этом пользователь должен заполнить название, описание, версию файла и т.д. Ты хочешь добавить несколько файлов, для них тоже нужно будет указывать в форме название, описание, версию файла и т.д.? Я думаю, что надо начинать с этой формы, разработать ее в соответствии с требованиями задачи, составить список переменных, которые будут передаваться из формы методом post в скрипт, и только после этого переходить к скрипту, чтобы выполнить запись.


Нет немножко не так, форма загрузки простой "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]
 
Убери скобки, назови лучше subfile_1, subfile_2, subfile_3

Просто дело совсем не в скобках, мне нужен алгоритм, те что я находил в инете почемуто не работают! Я так понимаю что функцию обработчик нужно запускать в цикле, но что должно быть ключом для его перебора ?
 
В скрипте доступ к новым файлам будет выглядеть так:

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"] - код ошибки, которая произошла при загрузке файла на сервер
 
В скрипте доступ к новым файлам будет выглядеть так:

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

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]

Щаз просто нет возможности проверить, интересно будет работать или нет ?
 
Не будет это массивом:

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);  
  ...
}
 
Вы знаете, не работает! Я сегодня уже весь день мучаюсь, но никак не получается! Скажите, а есть возможность посмотреть все что находится в масиве $_FILES ? Может мои файлы с формы вообще не передаются, а я мучаюсь !
 
вставьте вывод массива на экран:

PHP:
print_r($_FILES);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху