[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка картинок
copchic
Здравствуйте! Вопрос для тех кто штудировал курсы от IRBIS.

Форма для ввода данных находится в show.tpl

<form action="" method="post"> 
<b>
*Введите № телефона</b><br />
+38
<input name="form[value1]" type="text" size="10" value="<?php echo $POST['value1']; ?>">
<br>
<b>
Введите дополнительный № телефона</b><br />
+38
<input name="form[value2]" type="text" size="10" value="<?php echo $POST['value2']; ?>">
<br>


<p><br />
<input
name="ok" type="submit" class="стиль3" value="Дать рекламу">
<br/>
</p>
</form>


Обработчик в файле read_controller.php


<?php
/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../../404.html'));
}


/**
* We connect a file of the MySQL functions
* Подключаем файл функций MySQL
*/

include './libs/mysql.php';
/**
* Check of the entered data
* Проверка введенных данных
*/

if($ok)
{
if(mb_strlen($POST['value1']) > 10)
$info[] = IRB_LANG_SHORT_TELEFON;
elseif(mb_strlen($POST['value1']) < 10)
$info[] = IRB_LANG_SHORT_TELEFON;
if(!preg_match("|^[\d]*$|",$POST['value1']))
$info[] = IRB_LANG_INVALID_TELEFON;
if(!preg_match("|^[\d]*$|",$POST['value2']))
$info[] = IRB_LANG_INVALID_TELEFON;


}







/**
* The data recording block
* Блок записи информации
*/


if(!count($info))
{

$text = createBBtags($POST['value1'], false);
$text1 = createBBtags($POST['value2'], false);


if(!empty($text)and($text1))
{
mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."link`
SET

`tel` = '"
. escapeString($POST['value1']) ."',

`tel1` = '"
. escapeString($POST['value2']) ."'");


$info[] = IRB_LANG_YES_TEXT;

}
else
$info[] = IRB_LANG_NO_TEXT;
}
}

?>



Данные вносятся в бд. Нужно добавить загрузку картинок на сайт.

Новое имя картинки -в бд, саму картинку в папку upload

Понятно что в форму нужно добавить

<p><input type="file" name="form[value3]"></p>


А вот в обработчике не получается. С переменной $_FILES картинка не грузится. Может кто подскажет как сделать?

Заранее спасибо.



Спустя 56 минут, 16 секунд (24.09.2011 - 22:54) Sanchopansa написал(а):
<form action="" method="post" enctype="multipart/form-data"> 

Спустя 10 часов, 4 минуты, 27 секунд (25.09.2011 - 08:59) copchic написал(а):
Мы вместе с телефонами должны из одной формы (конкретно из этой) отправить файл.
Как отправить отдельно картинку я знаю.



<?php

/**
* Function of uploaded of a file
* Функция загрузки файла (аплоадер)
*
@param int $max_file_size максимальный размер файла в килобайтах
*
@param array $valid_extensions массив допустимых расширений
*
@param string $upload_dir директория загрузки
*
@return array сообщение о ходе выполнения
*
*
@author IT studio IRBIS-team (www.irbis-team.com)
*
@copyright © 2009 IRBIS-team
*/

function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.')
{

$error = null;
$info = null;
$max_file_size *= 1024;

if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK)
{
// проверяем расширение файла
$file_extension = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
if (in_array($file_extension, $valid_extensions))
{
// проверяем размер файла
if ($_FILES['userfile']['size'] < $max_file_size)
{
$destination = $upload_dir .'/' . $_FILES['userfile']['name'];

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))
$info = 'Файл успешно загружен';
else
$error = 'Не удалось загрузить файл';
}
else
$error = 'Размер файла больше допустимого';
}
else
$error = 'У файла недопустимое расширение';
}
else
{
// массив ошибок
$error_values = array(

UPLOAD_ERR_INI_SIZE => 'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
UPLOAD_ERR_FORM_SIZE => 'Размер файла превышает указанное значение в MAX_FILE_SIZE',
UPLOAD_ERR_PARTIAL => 'Файл был загружен только частично',
UPLOAD_ERR_NO_FILE => 'Не был выбран файл для загрузки',
UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',
UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск'

);

$error_code = $_FILES['userfile']['error'];

if (!empty($error_values[$error_code]))
$error = $error_values[$error_code];
else
$error = 'Случилось что-то непонятное';
}

return array('info' => $info, 'error' => $error);
}

/////////////////////////////////////////////////////////////////////
$extensions = array('jpg', 'jpeg', 'png', 'gif');
$upload_dir = 'upload';

// Запускаем функцию
if(!empty($_POST['upload_submit']))
{
$message = uploadHandle(200, $extensions, $upload_dir);

// Выводим сообщение
echo $message['error'] ? $message['error'] : $message['info'];
}
?>


<form action="file_upload.php" method="post" enctype="multipart/form-data"> 
<input
type="file" name="userfile" />
<input
type="submit" value="Закачать" name="upload_submit" />
</form>



Хорошо, а с помощью какой функции получить файл в моём случае для MVC на сайт ?
И как при этом имя файла засунуть в бд

Спустя 13 минут, 20 секунд (25.09.2011 - 09:12) jeka_pro написал(а):
Ну вы когда получаете массив $_FILES копируйте картинку в папку например images. В бд заносите имя файла, можно с путем можно без, кому как нравиться.

потом вытаскивайте из бд имя файла, и подставляйте значение
<img src"images/<?=$__myfile_name?>">

Спустя 4 минуты, 23 секунды (25.09.2011 - 09:17) copchic написал(а):
Когда я получаю массив $_FILES у меня контроллер ругается. Не знаю почему. Я думаю возможно ли отправлять и файл и другие данные одновременно?

Спустя 18 минут, 40 секунд (25.09.2011 - 09:35) jeka_pro написал(а):
ajax

Спустя 58 минут, 13 секунд (25.09.2011 - 10:34) copchic написал(а):
Давайте сначала. Вот форма для отправки данных и файла.

<form action="" method="post" enctype="multipart/form-data"> 
<b>
*Введите № телефона</b><br />
+38
<input name="form[value1]" type="text" size="10" value="<?php echo $POST['value1']; ?>">
<br>
<b>
Введите дополнительный № телефона</b><br />
+38
<input name="form[value2]" type="text" size="10" value="<?php echo $POST['value2']; ?>">
<br>
<input
type="file" name="form[value3]">

<p><br />
<input
name="ok" type="submit" class="стиль3" value="Дать рекламу">
<br/>
</p>
</form>


Проверяем как передаётся файл на сайт в обработчике.

echo '<pre>'; 
print_r($_FILES['value3']);
echo '</pre>';


Выдаёт ошибку! Файл не передаётся! Если без данных [value1] и [value2] - один файл, то передаётся.
Значит что-то не так в форме. Как Сделать?

Спустя 17 минут, 5 секунд (25.09.2011 - 10:51) jeka_pro написал(а):
print_r($_FILES['form']['name']['value3'] );

Спустя 25 минут, 34 секунды (25.09.2011 - 11:16) copchic написал(а):
Понял! Данные в моём случае через
<input type="file" name="form[value3]">
не отправляются. Нужно использовать
<input type="file" name="userfile" />
тогда массив передаётся!

Спустя 1 день, 9 часов, 3 минуты, 48 секунд (26.09.2011 - 20:20) copchic написал(а):
Здравствуйте, ещё один вопрос по загрузке картинок.

Если картинка отсылается вместе с данными всё ОК - но если картинка не выбрана при проверке ругается, что не тот формат файла.

Если файл выбран в форме - отсылается он,

а если не выбран нужно отправить свою картинку (скажем по умолчанию).

Возможно ли так сделать?

Спустя 1 час, 28 минут, 40 секунд (26.09.2011 - 21:49) Evilsoul написал(а):
copchic
Цитата
не отправляются. Нужно использовать


не совсем верно, можно использовать любое имя и его же принимать:

<input type="file" name="ivan" />


echo '<pre>';
print_r($_FILES['ivan']);
echo '</pre>';


Все остальные данные которые отправлены не с инпута типа файл будут находится в массиве $_POST в курсе IRBIS этот массив обрабатывается и создается новый $POST


Цитата
Возможно ли так сделать?



Не помню в каком виде приходит массив $_FILES если ничего не выбрано...
поэтому напишу два варианта:
1) Можно проверить есть ли что-то в этом массиве, допустим так
if(count($_FILES['userfile']) == 0) echo 'пусто';


2) или так:

if($_FILES['userfile']['size'] == 0) echo 'пусто';

Спустя 5 минут, 30 секунд (26.09.2011 - 21:54) Игорь_Vasinsky написал(а):
Цитата
Не помню в каком виде приходит массив $_FILES

в пустом :D

if(empty($_FILES['yourname']['tmp_name']))
echo "тю-тю";


В моём журнале есть статейка - почти все аспекты загрузки картино освещены.


_____________
Я знаю, что ничего не знаю...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.