Перейти к содержимому


Не срабатывает передача файлов в представлении

представление файлы

Сообщений в теме: 5

#1 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 06 Март 2015 - 09:54

Добрый день. Подскажите пожалуйста в чем может быть проблема. В представлении сделал форму с передачей файлов. Передаю по методу POST, передаю csrf. Но файл не передается. Делал вывод массива FILE - он пустой.

Код отображения:
<form method="POST" enctype="multipart/form-data">
	    <input type="hidden" name="csrf" value="{$csrf}">
	  
	    <textarea cols="40" rows="10" name="opisanie" placeholder="Ваше сообщение"></textarea><br>
	    <input name="files" size="18" type="file" ><br>
	    <input type="submit">
	    </form>

Код подготовки данных:
if($_REQUEST['opisanie'])
{
  $mas['Название'] = "Задание в рамках техподдержки от ".$user['fio'];
  $mas['Тип'] = "Задание";
  $mas['Тип проекта'] = "1";
  $mas['Проект'] = "14";
  $mas['Исполнитель'] = "200";
  $mas['Описание задания'] = $_REQUEST['opisanie'];
  $mas['Приоритет'] = "Высокий";
  $new_id = insert_query($mas, "задания");
  //print_r($_FILES);
// echo $_REQUEST["csrf"];
   //  echo $_FILES["files"]["name"];
	 if(is_array($_FILES["files"]["tmp_name"]))
	   {
		 $count = count($_FILES["files"]["tmp_name"]);
		 for($i = 0; $i < $count; $i++)
		 {
			   if( $_FILES['files']['error'][$i] == 0 )
			  {
			    $tmpname = $_FILES["files"]["tmp_name"][$i];
			    $named = $_FILES["files"]["name"][$i];
			    $dat = file_get_contents($tmpname);					 
			    save_data_file(1207, $new_id, $named, $dat);
			    $mas['Файл'] = $mas['Файл'] ? ($mas['Файл']."\r\n".$named) : $named;
			  }
		 }
	   }
	 update_query($mas, "Обращения", "id=$new_id");
 
}


#2 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 06 Март 2015 - 10:08

Просмотр сообщенияaleks.goodcolor (06 Март 2015 - 09:54) писал:

Добрый день. Подскажите пожалуйста в чем может быть проблема. В представлении сделал форму с передачей файлов. Передаю по методу POST, передаю csrf. Но файл не передается. Делал вывод массива FILE - он пустой.

Код отображения:
<form method="POST" enctype="multipart/form-data">
		<input type="hidden" name="csrf" value="{$csrf}">
	  
		<textarea cols="40" rows="10" name="opisanie" placeholder="Ваше сообщение"></textarea><br>
		<input name="files" size="18" type="file" ><br>
		<input type="submit">
		</form>



Посмотрите исходный код в браузере. Вы в представлении создали свою форму (<form method="POST" enctype="multipart/form-data">),
а шаблон представления имеет свою - <form action="report.php?id=ХХХ" method="post" id="report_form" style="margin:0 32px">

Скорее всего у Вас постится стандартная для представлений форма, где нет данных

Попробуйте так

</form><!--Закрываем стандартную-->
<form method="POST" enctype="multipart/form-data"  action=''>
		<input type="hidden" name="csrf" value="{$csrf}">
	  
		<textarea cols="40" rows="10" name="opisanie" placeholder="Ваше сообщение"></textarea><br>
		<input name="files" size="18" type="file" ><br>
		<input type="submit">

Т.е сначала закройте стандартную, а за тем начинайте свою. В объявлении своей не указывайте закрывающий тэг </form>

Возможно поможет

Сообщение отредактировал maksn: 06 Март 2015 - 10:17

"...Сижу, паяю. CRM починяю..."
Мои разработки

#3 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 06 Март 2015 - 10:17

Попытался - но все также осталось - причем текстовая переменная передается, а вот файл ни в какую не хочет. Может что-то блокирует...

#4 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 06 Март 2015 - 10:36

Простите нет времени испытать ваш код: Код из рабочего проекта

		<form method='post' enctype='multipart/form-data'>
			<table style='margin-top: 20px;'>
				<tbody>
				<tr>
					<td>
						<div class='w_left_name'>
							Прикрепить файл:
						</div>
					</td>
					<td>
						<div class='w_right_name'>
							<input type='file' name='file'/>
						</div>
					</td>
				</tr>

				<tr>
					<td colspan='2'>
						<p style='margin-top: 20px'>
							<span style='color: red;'>*</span> - поля, обязательные для заполнения
						</p></td>
				</tr>
				<tr>
					<td colspan='2' align='right'>
						<input name='w_submit' id='w_submit_file' value='Сообщить об оплате' type='submit'
							   style='padding: 5px;'>
						<input type='hidden' name='send_pay'/>
						<input type='hidden' name='csrf' value='{$csrf}'/>
					</td>
				</tr>
				</tbody>
			</table>
		</form>

//добавляем строку в таблицу
$line_insert_id = data_insert(131, EVENTS_ENABLE, $insert_data);
			//Если файл успешно загружен
			if ($_FILES['file']['error'] == 0) {

				$file_path = get_file_path(1311, $line_insert_id, $_FILES['file']['name']);
				create_data_file_dirs(1311, $line_insert_id, $_FILES['file']['name']);
				copy($_FILES['file']['tmp_name'], $file_path);
				$update_data['Сканированный файл'] = $_FILES['file']['name'];
				update_query($update_data, "Оплаты", "`id`=" . intval($line_insert_id));
			}


#5 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 06 Март 2015 - 10:51

смог получить файл только после перемещения формы вниз страницы со сдвигом тегов как посоветовал maksn - спасибо за помощь!

#6 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 06 Март 2015 - 10:54

Просмотр сообщенияaleks.goodcolor (06 Март 2015 - 10:51) писал:

смог получить файл только после перемещения формы вниз страницы со сдвигом тегов как посоветовал maksn - спасибо за помощь!
Да не за что. Сам натыкался на эти грабли
"...Сижу, паяю. CRM починяю..."
Мои разработки





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных