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

Форум PHP

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

 

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

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

тема: Загрузка файлов на сервер. (Страничка-обработчик)
 
 автор: Гавриленко Дмитрий   (11.06.2010 в 14:22)   письмо автору
 
 

Как узнать был ли файл выбран пользователем?

  Ответить  
 
 автор: garold   (11.06.2010 в 14:43)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 14:22)
 

$_FILES

  Ответить  
 
 автор: Гавриленко Дмитрий   (11.06.2010 в 15:40)   письмо автору
 
   для: garold   (11.06.2010 в 14:43)
 

if(empty($_FILES)) echo "Файл не выбран";

Так?

  Ответить  
 
 автор: sl1p   (11.06.2010 в 15:45)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 15:40)
 

print_r($_FILES);

посомтрите что там.

  Ответить  
 
 автор: Гавриленко Дмитрий   (11.06.2010 в 15:54)   письмо автору
 
   для: sl1p   (11.06.2010 в 15:45)
 

если файл не выбран выводит весь массив $_FILES - Array ( [uf] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
если выбран выводит пустой массив- Array ( )

  Ответить  
 
 автор: sl1p   (11.06.2010 в 16:00)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 15:54)
 

наверное наоборот :))

  Ответить  
 
 автор: Гавриленко Дмитрий   (11.06.2010 в 16:03)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 14:22)
 

Вот вам моя версия этого скрипта

<?
if(empty($_FILES['uf']['filename']))
{
    
$err[] = "Вы не выбрали файл для загрузки!";
}
if (!isset(
$_POST['folder']))
{
    
$err[] = "Вы не выбрали папку для сохранения!";
}
if(isset(
$err))
{
    foreach(
$err as $errors) echo "$errors<br>";
}
?>

У меня тут еще кусок от предупреждения на счет папок

  Ответить  
 
 автор: neadekvat   (11.06.2010 в 16:17)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 16:03)
 

Если в форме folder - не чекбокс и не радиокнопка, то по идее isset будет возвращать всегда true
А вот $err должен быть объявлен еще до всех этих телодвижений, иначе у вас должен вылезать notice при отсутствии ошибок.

<?php
$err 
'';
if (empty(
$_FILES['uf']['filename']))
    
$err[] = "Вы не выбрали файл для загрузки!"

if (empty(
$_POST['folder'])) 
    
$err[] = "Вы не выбрали папку для сохранения!"

if (!empty(
$err)) 
    foreach(
$err as $errors) echo "$errors<br>"

  Ответить  
 
 автор: Гавриленко Дмитрий   (11.06.2010 в 17:53)   письмо автору
 
   для: neadekvat   (11.06.2010 в 16:17)
 

>Если в форме folder - не чекбокс и не радиокнопка, то по идее isset будет возвращать всегда true
>А вот $err должен быть объявлен еще до всех этих телодвижений, иначе у вас должен вылезать notice при отсутствии ошибок.
>
>
<?php
>$err '';
>if (empty(
$_FILES['uf']['filename']))
>    
$err[] = "Вы не выбрали файл для загрузки!"
>
>if (empty(
$_POST['folder'])) 
>    
$err[] = "Вы не выбрали папку для сохранения!"
>
>if (!empty(
$err)) 
>    foreach(
$err as $errors) echo "$errors<br>"
>


Постояно пишет что не выбран файл

  Ответить  
 
 автор: neadekvat   (11.06.2010 в 19:05)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 17:53)
 

Смеетесь? Я использовал ваш код, что ж вы его не проверили? :)

  Ответить  
 
 автор: NSDaler   (13.06.2010 в 13:09)   письмо автору
 
   для: neadekvat   (11.06.2010 в 16:17)
 

не вылезет notice, здесь же происходит проверка на наличие вообще $err=)

  Ответить  
 
 автор: Гавриленко Дмитрий   (11.06.2010 в 17:57)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 14:22)
 

Отправка


<form action='upfile.php' method='POST' enctype='multipart/form-data'>
Выберите файл:<input type='file' name='file'><br>
Выберите папку<br>
<input type='radio' name='folder' value='other'> Разное<br>
<input type='radio' name='folder' value='img'> Картинки<br>
<input type='submit'>
</form>


Для справки

Обработчик


<?php 
$err 
''
if (empty(
$_FILES['file']['filename'])) 
    
$err[] = "Вы не выбрали файл для загрузки!";  

if (empty(
$_POST['folder']))  
    
$err[] = "Вы не выбрали папку для сохранения!";  

if (!empty(
$err))  
    foreach(
$err as $errors) echo "$errors<br>";
?> 

  Ответить  
 
 автор: neadekvat   (11.06.2010 в 19:07)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 17:57)
 

Выше я написал
"Если в форме folder - не чекбокс и не радиокнопка, то по идее isset будет возвращать всегда true"
У вас как раз таки радиокнопка, и надо проверять isset..

  Ответить  
 
 автор: Лена   (11.06.2010 в 21:36)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 17:57)
 


if (empty($_FILES['file']['name']))


Посмотрите еще раз на свой массив $_FILES, где вы его выводили.

  Ответить  
 
 автор: Гавриленко Дмитрий   (13.06.2010 в 13:02)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 17:57)
 

Люди, посмотрите и по тестируйте!
<?php 
echo $_POST['folder'];
echo 
"<br>".$_FILES['file']['name'];
?> 

Попробуйте через мою форму по выбирайте файл и папку.
Файл выбираешь, отправляешь, не чего не выводит.
Когда выбираешь только только папку, выводит все правильно.
Когда выбираешь и файл и папку не чего не выводит!

  Ответить  
 
 автор: NSDaler   (13.06.2010 в 13:11)   письмо автору
 
   для: Гавриленко Дмитрий   (13.06.2010 в 13:02)
 

сделайте форму, поместите туда <input type=file name=newfile> и <input type=submit>
в php скрипте, к которому ссылается форма напишите print_r($_FILES);
и вы сразу все поймете

  Ответить  
 
 автор: Гавриленко Дмитрий   (13.06.2010 в 13:23)   письмо автору
 
   для: NSDaler   (13.06.2010 в 13:11)
 

не понятно. Когда файл не выбран пишет Array ( [file] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
Когда выбран пишет Array()

  Ответить  
 
 автор: sim5   (13.06.2010 в 13:28)   письмо автору
 
   для: Гавриленко Дмитрий   (13.06.2010 в 13:23)
 

[error] => 4
прочтите сперва в мануале о загрузке файлов на сервер.

  Ответить  
 
 автор: Гавриленко Дмитрий   (13.06.2010 в 13:27)   письмо автору
 
   для: NSDaler   (13.06.2010 в 13:11)
 

Че, надо проверять? Если массив не пустой то выдаем ошибку?

  Ответить  
 
 автор: sim5   (13.06.2010 в 13:26)   письмо автору
 
   для: Гавриленко Дмитрий   (11.06.2010 в 17:57)
 

Загрузку изображения (пермещения в папку) нужно начинать с проверки отсутствия ошибок при загрузке ($_FILES['file']['error']).
Не выгодно опять грузить файл, если пользователь забыл указать папку.
Сама логика скрипта у вас ни к черту.

  Ответить  
 
 автор: Гавриленко Дмитрий   (13.06.2010 в 13:31)   письмо автору
 
   для: sim5   (13.06.2010 в 13:26)
 

И что вы предлагаете? С начала грузить файл, потом выбирать куда его сохранять?

  Ответить  
 
 автор: sim5   (13.06.2010 в 13:37)   письмо автору
 
   для: Гавриленко Дмитрий   (13.06.2010 в 13:31)
 

Я вам уже предложил - почитать в мануале о загрузке файлов на сервер, вы совершенно не представляете себе этого вопроса.

Что касается перемещения из временной папки в папку назначения, то зачем повторно заставлять пользователя загружать файл, если он успешно загружен? Пусть исправит ошибку - укажет папку, а ранее загруженный файл временно сохранить при этом, и использовать для этого сессию, дабы не создавать мусора, если пользователь покинет сервер.

  Ответить  
Rambler's Top100
вверх

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