Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузка изображений
 
 автор: Zew   (07.11.2005 в 13:17)   письмо автору
 
 

Помогите, плз. В чем тут ошибка?


<?
//из файла выбора изображения:
<form name="load" action="fanart.php?action=upload" method="post">
<
input type="file" name="loadimg" value="">
<
input type="submit" name="submit" value="Добавить">
</
form>

//из файла загрузки:
if(!$_FILES['loadimg']['size']){
if(
$_FILES['loadimg']['size'] <= 716800){
$img_info pathinfo($_FILES['loadimg']['name']);
if(
$img_info['extension'] == 'jpg' || $img_info['extension'] == 'JPG' || $img_info['extension'] == 'gif' || $img_info['extension'] == 'GIF'){
$img_dir "fanart/".$auth_art."/";
$img_name time().$_FILES['loadimg']['tmp_name'];
$img_file $img_dir.$img_name;
if(!
copy($_FILES['loadimg']['tmp_name'],$img_file)){echo "Файл не загружен";}else{echo "ура!";}
}else{echo 
"Неправильное расширение файла. Поддерживаются: jpg, JPG, gif и GIF.";}
}else{echo 
"Ваш файл больше 700 кб";}
}else{echo 
"Вы не выбрали файл";}
}else{echo 
"У вас нет доступа";}
?>


Постоянно пишет "Вы не выбрали файл". Пробовала поменять $_FILES на $HTTP_POST_FILES - результат тот же...
Частично для этого кода я использовала галлерею Wallist, которая сама по себе тоже как-то неправильно работала (загруженные файлы не отображались).

   
 
 автор: cheops   (07.11.2005 в 13:49)   письмо автору
 
   для: Zew   (07.11.2005 в 13:17)
 

Замените строку
<?php
if(!$_FILES['loadimg']['size'])
?>

на
<?php
if($_FILES['loadimg']['size'])
?>


PS В HTML-форме необходимо добавить атрибут enctype='multipart/form-data', иначе файлы будут "биться"
<form  enctype='multipart/form-data' name="load" action="fanart.php?action=upload" method="post"> 
<input type="file" name="loadimg" value=""> 
<input type="submit" name="submit" value="Добавить"> 
</form>

   
 
 автор: Zew   (07.11.2005 в 14:12)   письмо автору
 
   для: cheops   (07.11.2005 в 13:49)
 

>Замените строку
Заменила. Но результат тот же... Точнее, изначально он так и был, это я уже потом с ним намудрила, когда искала в чем ошибка... *_*

   
 
 автор: cheops   (07.11.2005 в 19:12)   письмо автору
 
   для: Zew   (07.11.2005 в 14:12)
 

Выведите перед обработчиком дамп массива $_FILES
<?php
  print_r
($_FILES);
?>

Данные передаются корректно?

   
 
 автор: Zew   (07.11.2005 в 19:48)   письмо автору
 
   для: cheops   (07.11.2005 в 19:12)
 

Вот это выводится:

Array ( [loadimg] => Array ( [name] => 7628.jpg [type] => image/pjpeg [tmp_name] => /tmp/phpCYt25K [error] => 0 [size] => 30947 ) )

   
 
 автор: cheops   (07.11.2005 в 19:51)   письмо автору
 
   для: Zew   (07.11.2005 в 19:48)
 

Хм... странно и пишет "Вы не выбрали файл", даже после последнего исправления?

   
 
 автор: Zew   (07.11.2005 в 19:54)   письмо автору
 
   для: cheops   (07.11.2005 в 19:51)
 

Да. Сейчас этот кусок кода выглядит вот так:

print_r($_FILES);
if($_FILES['loadimg']['size']){
if($_FILES['loadimg']['size'] <= 716800){
$img_info = pathinfo($_FILES['loadimg']['name']);
if($img_info['extension'] == 'jpg' || $img_info['extension'] == 'JPG' || $img_info['extension'] == 'gif' || $img_info['extension'] == 'GIF'){
$img_dir = "fanart/".$auth_art."/";
$img_name = time().$_FILES['loadimg']['tmp_name'];
$img_file = $img_dir.$img_name;
if(!copy($_FILES['loadimg']['tmp_name'],$img_file)){echo "Файл не загружен";}else{echo "ура!";}
}else{echo "Неправильное расширение файла. Поддерживаются: jpg, JPG, gif и GIF.";}
}else{echo "Ваш файл больше 700 кб";}
}else{echo "Вы не выбрали файл";}
}else{echo "У вас нет доступа";}


И в полном виде выдает следующее:

Array ( [loadimg] => Array ( [name] => 7628.jpg [type] => image/pjpeg [tmp_name] => /tmp/phpCYt25K [error] => 0 [size] => 30947 ) ) Файл не загружен 

   
 
 автор: cheops   (07.11.2005 в 20:35)   письмо автору
 
   для: Zew   (07.11.2005 в 19:54)
 

Хм... а если заменить
<?php
if($_FILES['loadimg']['size']){
?>

на
<?php
if($_FILES['loadimg']['size'] > 0){
?>

что-нибудь меняется?

   
 
 автор: Zew   (07.11.2005 в 20:46)   письмо автору
 
   для: cheops   (07.11.2005 в 20:35)
 

То же самое... Я пробовала так же и isset($_FILES['loadimg']['name']) и !empty($_FILES['loadimg']['size']) - результат всегда один... *_* Эх, вечно у меня ничего не работает как надо - видно и правда руки кривые. =)
Так что, ничего с этим поделать нельзя?..

   
 
 автор: Clocker   (08.11.2005 в 00:01)   письмо автору
 
   для: Zew   (07.11.2005 в 20:46)
 

Пользуйтесь на здоровье-)

Рабочий код, сам таким пользуюсь, правда, модифицированным "под себя".


<FORM ENCTYPE="multipart/form-data" ACTION="imageupload.php" METHOD="POST">
The file: <INPUT TYPE="file" NAME="userfile">
<INPUT TYPE="submit" VALUE="Upload">
</FORM>

<?php

$path 
"/home/mysite.loc/images/"// путь к папке для загрузки
$max_size 200000; .// максимальный размер файла

if (!isset($HTTP_POST_FILES['userfile'])) exit;

if (
is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {

if (
$HTTP_POST_FILES['userfile']['size']>$max_size) { echo "The file is too big<br>\n"; exit; }
if ((
$HTTP_POST_FILES['userfile']['type']=="image/gif") || ($HTTP_POST_FILES['userfile']['type']=="image/pjpeg") || ($HTTP_POST_FILES['userfile']['type']=="image/jpeg")) {

if (
file_exists($path $HTTP_POST_FILES['userfile']['name'])) { echo "The file already exists<br>\n"; exit; }

$res copy($HTTP_POST_FILES['userfile']['tmp_name'], $path .
$HTTP_POST_FILES['userfile']['name']);
if (!
$res) { echo "upload failed!<br>\n"; exit; } else { echo "upload sucessful<br>\n"; }

echo 
"File Name: ".$HTTP_POST_FILES['userfile']['name']."<br>\n";
echo 
"File Size: ".$HTTP_POST_FILES['userfile']['size']." bytes<br>\n";
echo 
"File Type: ".$HTTP_POST_FILES['userfile']['type']."<br>\n";
} else { echo 
"Wrong file type<br>\n"; exit; }

}

?>

   
 
 автор: Zew   (08.11.2005 в 19:57)   письмо автору
 
   для: Zew   (07.11.2005 в 20:46)
 

Спасибо большое, работает! =)) Мдя, видимо, действительно у меня не поддерживался этот $_FILES - вот с помощью этого кода переделала свой, и заработало! =)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования