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

Форум PHP

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

 

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

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

тема: обработка массива $_FILES
 
 автор: garold   (14.07.2010 в 12:26)   письмо автору
 
 

Уже запутался. Поля отправки файла такое <input type='file' name='file[]'>

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

Проблемы обработать один файл нет, а вот несколько, это проблематично. Как обойти массив и получить имя каждого файла?

  Ответить  
 
 автор: sim5   (14.07.2010 в 12:31)   письмо автору
 
   для: garold   (14.07.2010 в 12:26)
 

А как получают доступ к элементам массива?

  Ответить  
 
 автор: garold   (14.07.2010 в 12:34)   письмо автору
 
   для: sim5   (14.07.2010 в 12:31)
 

наверное, путем обхода
<?
foreach($_FILES['file') AS $file)
{
    echo 
$file[0].'<br />';
}

?>

  Ответить  
 
 автор: sim5   (14.07.2010 в 12:37)   письмо автору
 
   для: garold   (14.07.2010 в 12:34)
 

Ну и... какие же проблемы с массивом $_FILES?
foreach($_FILES['file'] as $file)

только вы тут никак не получите $file[0] ... $file[n], да и не это нужно получать.

  Ответить  
 
 автор: garold   (14.07.2010 в 12:41)   письмо автору
 
   для: sim5   (14.07.2010 в 12:37)
 

Как мне в таком порядке получить доступ к имени временного файла? То есть tmp_name?

  Ответить  
 
 автор: sim5   (14.07.2010 в 12:42)   письмо автору
 
   для: garold   (14.07.2010 в 12:41)
 

Значете как загружать один файл, что нужно проверять при загрузке? Вот теперь подумайте как это же самое получать в цикле для каждого элемента массива $_FILES.

  Ответить  
 
 автор: garold   (14.07.2010 в 12:45)   письмо автору
 
   для: sim5   (14.07.2010 в 12:42)
 

блин да думал уже сколько-то.подсказали бы, был бы рад

  Ответить  
 
 автор: sim5   (14.07.2010 в 12:55)   письмо автору
 
   для: garold   (14.07.2010 в 12:45)
 

Значит плохо думали. Как вы загружаете один файл? Что проверяете? То есть, какова последовательность ваших действий? Опишите.

  Ответить  
 
 автор: garold   (14.07.2010 в 12:59)   письмо автору
 
   для: sim5   (14.07.2010 в 12:55)
 

<?
if(!empty($_FILES['filename']))
{
    
move_uploaded_file($arg1,$arg2)
}
?>


p.s. это обобщено

  Ответить  
 
 автор: sim5   (14.07.2010 в 13:02)   письмо автору
 
   для: garold   (14.07.2010 в 12:59)
 

За такую обобщенность по рукам бить надо! Пока не научитесь загружать как положено один файл, о массиве их и не думайте.

  Ответить  
 
 автор: garold   (14.07.2010 в 13:07)   письмо автору
 
   для: sim5   (14.07.2010 в 13:02)
 

Хорошо, вот. Заранее известно что файл имеет расширение jpg
<? 
if(!empty($_FILES['filename'])) 

    
move_uploaded_file($_FILES['filename']['tmp_name'],$_SERVER['DOCUMENT_ROOT']."/files/file.jpg");

?>

  Ответить  
 
 автор: sim5   (14.07.2010 в 13:19)   письмо автору
 
   для: garold   (14.07.2010 в 13:07)
 

Не делайте мне одолжния, это не мне нужно а вам.
Нет, не правильно - загрузку файлов нужно начинать проверкой на отсутсвие ошибок. То что файл дразнится "file.jpg", совсем еще не означает, что вам именно картинку грузят.

  Ответить  
 
 автор: garold   (14.07.2010 в 13:26)   письмо автору
 
   для: sim5   (14.07.2010 в 13:19)
 

sim5, я не делаю Вам одолжения, более того все провреки я делаю. Я не хочу писать полный код обработки файла. Да могут грузить не картинку, но я сейчас не об этом, а вы начинаете говорить про какие-то проверки о которых речи быть ТУТ не может, потому что это проблему я смогу решить. Это я привел в качестве примера.
Сейчас задача сводится к тому, что мне нужно правильно обработать массив, чтобы на выходе получить 2 значения каждого загружаемого файла, это тип файла и временный файл. Вы, наверное, уже поняли зачем мне нужен тип. Да ИМЕННО проверить является файл графическим или нет. В этом вся проблема. Или вы можете что-то другое предложить?

  Ответить  
 
 автор: Valick   (14.07.2010 в 13:31)   письмо автору
 
   для: garold   (14.07.2010 в 13:26)
 

Или вы можете что-то другое предложить?
Я всеегда предлогал и буду это делать - читать книги.
Зачем вам на выходе 2 значения, не бейте мозг ни себе ни людям.
загрузка файла на сервер это комплекс мер по принятию и обработке файла. Вам нужно весь этот комплекс от начала до конца засунуть в цикл.

  Ответить  
 
 автор: garold   (14.07.2010 в 13:34)   письмо автору
 
   для: Valick   (14.07.2010 в 13:31)
 

Все разобрался...
Вот чего я хотел добиться
<?

$count 
count($_FILES['file']['name']);
    for (
$i 0$i $count$i++)
     {
          echo 
$_FILES['file']['tmp_name'][$i].'<br />';
// остальное
     
}

?>


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

  Ответить  
 
 автор: garold   (14.07.2010 в 13:36)   письмо автору
 
   для: Valick   (14.07.2010 в 13:31)
 

>загрузка файла на сервер это комплекс мер по принятию и обработке файла. Вам нужно весь этот комплекс от начала до конца засунуть в цикл.
Ну я это и имел ввиду, в цикле, конечно, получить

  Ответить  
 
 автор: sim5   (14.07.2010 в 13:40)   письмо автору
 
   для: garold   (14.07.2010 в 13:26)
 

Коли вы знаете и делаете проверки, то тип файла, который у вас получить в массиве прблема, это профанация, ибо я могу этот тип подделать. И вы еще после этого утверждаете, что думаете?
Коли знаете, то обращайтесь в цикле к каждому элементу массива $_FILES, правда для это более удобнее цикл for (то что вы писали ранее в foreach, могли бы и проверить выводом):
<?
for($i=0$i<count($_FILES['fieldname']); $i++) {
  echo 
$_FILES['fieldname']['keyname'][$i].'<br>';
}

  Ответить  
 
 автор: garold   (14.07.2010 в 13:45)   письмо автору
 
   для: sim5   (14.07.2010 в 13:40)
 

Как же это Вы его поддлаете? Имеется ввиду $_FILES['file']['type'].
Тогда какую проверку следует использовать?

  Ответить  
 
 автор: sim5   (14.07.2010 в 13:57)   письмо автору
 
   для: garold   (14.07.2010 в 13:45)
 

Молча, возьму и подделаю.
Не хотите вы думать, а пишите свои скрипты по подсказакам, а не по полученым знаниям. Об этом же говорит и ваша придыдущая тема о группировке, которую, в чем я у верен на все 100, в вашем случае вам и близко не нужна, в том варианте, в котором вам предложил sms-send. Но вы сказали "спасибо" и успокоились. Вот так и с загрузкой изображения у вас будет, а это чревато...
Ищите Гуглом "загрузка файлов на сервер безопасность", познаете много полезного. И как познаете, садитесь писать свой скрипт загрузки.

  Ответить  
 
 автор: garold   (14.07.2010 в 14:01)   письмо автору
 
   для: sim5   (14.07.2010 в 13:57)
 

Спасибо за совет, я учту. Да тут даже дело в том что этот скрипт под закрытой частью. Особая защита тут не нужно, но все же учту...

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

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