[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка изображения на сервер не работает
DorianLeroy
Есть форма, у нее 4 текстовых поля, также хочу добавить загрузку изображения в этой форме.
Возникает вопрос:
Возможно ли загружать изображение и другие поля в одной форме, ведь аттрибут формы должен быть enctype='multipart/form-data'
Подскажите в общих чертах, как реализовать изображение и другие поля вместе?Я пишу cms-ку, дошел до модуля, где нужно реализовать новостной блок, в котором должно быть - дата создания, краткое описание и картинки.
Если кому интересно, делаю вот так:

<form name='Quest' action=admin.php?newnews method='post' enctype='multipart/form-data'>

<
input type="file" name="filename">


Название
<input type='text' name=title_b style='width: 70%;' value='' />


<
input type='text' name=description_b style='width: 70%;' value='' />

Ключевые слова
<input type='text' name=keywords_b style='width: 70%;' value='' />


<
input type='submit' name=submit style='width: 170;' value=Отправить /></td>

</
form>


Обработчик:



if(isset($_POST["submit"]))
{
$title_b=$_POST["title_b"];
$description_b=$_POST["description_b"];
$keywords_b=$_POST["keywords_b"];
$body_b=$_POST["body_b"];


print_r($_FILES);


if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
// Если файл загружен успешно, перемещаем его
// из временной директории в конечную

move_uploaded_file($_FILES["filename"]["tmp_name"],'./'.$_FILES["filename"]["name"]);
echo "File uploaded!";
} else {
echo("Ошибка загрузки файла");
}




print_r($_FILES);
выдает

Array ( [filename] => Array ( [name] => 071.jpg [type] => image/jpeg [tmp_name] => Z:tmpphpC3E4.tmp [error] => 0 [size] => 79282 ) )
tmp_name без слэшей почемуто...



Спустя 9 часов, 26 минут, 25 секунд (15.04.2011 - 09:30) sebastjan написал(а):
Не стал копаться, просто привожу свой пример.
я папку временной загрузки темп указал явно и создал в дериктории.
вот мой рабочий пример.

if(isset($_FILES['fupload']))//ZAGRUZKA KARTINKI
{#IF IMAGE UPLOAD UND SIZE
if($_FILES['fupload']['size']>4194304)
{
echo "ERROR SIZE IMAGE!";
exit;
}
$source = $_FILES['fupload']['tmp_name'];
$target = '../image_tmp/'.$_FILES['fupload']['name'];
move_uploaded_file ($source, $target);
/* допиши что тебе надо дальше делать сам */



Спустя 15 минут, 9 секунд (15.04.2011 - 09:45) sebastjan написал(а):
Про поля в форму
Вставляешь в общую форму поле для загрузки и кнопку загрузка
В скрипте деалешь проверку на нажатие этой кнопки, в куске выше показанно

<input type='hidden' name='MAX_FILE_SIZE' value='4194304'>
<input
type='file' name='fupload' size='35'>  
<input type='submit' value='zagruzka'><br><br>


Спустя 26 минут, 14 секунд (15.04.2011 - 10:11) DorianLeroy написал(а):
Не помогает, я думаю тут какая-то специфическая проблема в tmp_name. Почему директория без слышей, вот такая
[tmp_name] => Z:tmpphpC3E4.tmp
и
$source = basename($_FILES['spec']['tmp_name']);
echo $source;
выводит тоже самое

Спустя 57 минут, 57 секунд (15.04.2011 - 11:09) sebastjan написал(а):
Что то у тебя с путями не првильно
Вот только перепроверил,всё работает.

<?
header("Content-Type: text/html; charset=utf-8");
if(isset($_FILES['fupload']))//ZAGRUZKA KARTINKI
{
if($_FILES['fupload']['size']>4194304)
{
echo "ERROR SIZE IMAGE!";
exit;
}
$source = $_FILES['fupload']['tmp_name'];
$target = './image_tmp2/'.$_FILES['fupload']['name'];
move_uploaded_file ($source, $target);
////////////////////////////////////////////////////////////////////////
}
?>
<form enctype="multipart/form-data" action="" method="post">
<
input type="hidden" name="MAX_FILE_SIZE" value="4194304">
<
input type="file" name="fupload" size="35">  
<input type="submit" value="hochladen"><br><br>
</
form>



Спустя 1 минута, 11 секунд (15.04.2011 - 11:10) sebastjan написал(а):
Создай явно папку в корне ( WWW) ./image_tmp2/ и проверь скрипт

Спустя 9 минут, 21 секунда (15.04.2011 - 11:20) sebastjan написал(а):
Да потому и без слешей, ты кидаешь файл
move_uploaded_file($_FILES["filename"]["tmp_name"],'./'.$_FILES["filename"]["name"]);
В корень сервера !

Спустя 23 минуты, 45 секунд (15.04.2011 - 11:43) DorianLeroy написал(а):
Да, не, тут что-то глобальное похоже. Я кидал и в папки различные. В сms-ке что-то странное накодено, потомучто при работе с модулем фотогаллереи при загрузке файла вылетает ошибка
Warning: copy(Z:tmpphp6036.tmp) [function.copy]: failed to open stream: No such file or directory in Z:\home\oil\www\admin.php on line 479
Я думаю какая-то команда где-то прописана... В любом случае спасибо за помощь :)
Быстрый ответ:

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