X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Загрузка нескольких файлов одновременно
yuriy_hb
yuriy_hb
Topic Starter сообщение 29.7.2010, 16:40; Ответить: yuriy_hb
Сообщение #1


Подскажите. Есть у меня форма:

<form action='index.php' method='post' enctype='multipart/form-data'>
Send these files:<br>
<input name='userfile[]' type='file'><br>
<input name='userfile[]' type='file'><br>
<input type='submit' name='submit' value='Send files'>
</form>


Количество полей для загрузки меняетсся (тоисть определенно я не знаю сколько полей захочет создать пользователь: 2 или 20)

Мне нужно создать РНР-скрипт который мог бы загружать все выбраные файлы на сервер. Может кто подскажет как реализовать такой механизм загрузки! Спасибо...:sarcastic:
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SOKOJI
SOKOJI
сообщение 29.7.2010, 16:49; Ответить: SOKOJI
Сообщение #2


[PHP]$size = count($_FILES);

for(...) {
...
}[/PHP]

Копать в эту сторону.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 29.7.2010, 16:59; Ответить: yuriy_hb
Сообщение #3


пробую определить количество выбраных файлов с помощью
[PHP]$size = count($_FILES);[/PHP]

но у меня постоянно выдает 1, хотя я скажем выбрал 5 файлов то размер массива должен быть равным 5... что-то не совсем понимаю. В глобальный масив $_FILES передаются ведь все выбраные файлы...
как все же определить количество выбраных и отправленых файлов на сервер?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 29.7.2010, 17:06; Ответить: ZhukV
Сообщение #4


А там сложного ничего нет:
[PHP]
function UpdateArrayFILES($r = ''){
if(!$r){ return; }
if(!is_array($_FILES) || !count($_FILES)){ return; }
$temp = $_FILES[$r];
foreach($temp['name'] as $key => $value){
if(!$temp['name'][$key]){ continue; }
$RESULT[$key]['name'] = $temp['name'][$key];
$RESULT[$key]['size'] = $temp['size'][$key];
$RESULT[$key]['tmp_name'] = $temp['tmp_name'][$key];
$RESULT[$key]['type'] = $temp['type'][$key];
$RESULT[$key]['error'] = $temp['error'][$key];
}
return $RESULT;
}


$T = UpdateArrayFILES('userfile');//переформатируем массив, чтоб было удобно
if(is_array($T)){
foreach($T as $file){
if(!$file['error']){
copy($file['tmp_name'], 'куда ты хочешь');
}
}
}
[/PHP]
Это супер пупер просто........
Дело в том, что здесь нет никакой проверки и толковой обработки.
Надеюсь, суть понятна....
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 29.7.2010, 17:35; Ответить: ZhukV
Сообщение #5


(yuriy_hb @ 29.7.2010, 19:59) *
но у меня постоянно выдает 1,

Потому что имя файла только одно -- userfile, ты же просто делаеш из него массив (userfile[])

(yuriy_hb @ 29.7.2010, 19:59) *
$_FILES передаются ведь все выбраные файлы...

Вполне верно, вот только сам $_FILES это массив.
Вот:
Если ты имя поля поставил 'upload', то и вытаскивать те нужно $_FILES['upload']. Если уж поле 'userfile', то вытаскивать его $_FILES['userfile']

У ся в примере, на оброботчике поставь
[PHP]
print_r($_FILES);
[/PHP]
Должен увидеть некую структуру. Вот и по ней те следует действовать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yuriy_hb
yuriy_hb
Topic Starter сообщение 29.7.2010, 20:13; Ответить: yuriy_hb
Сообщение #6


А еще вопрос: как мне сделать проверку на наличие закгрузки определенных файлов?
Я сделал следующе:
[PHP]if(!empty($_FILES['myfile']['name']) and (ereg("image", $_FILES['myfile']['type']) or ereg("\.xls", $_FILES['myfile']['type']) or ereg("\.doc", $_FILES['myfile']['type']) or ereg("\.pdf", $_FILES['myfile']['type']))) [/PHP]


Мне нужно чтобы пользователь смог загружать только такие форматы: gif, png, jpg, doc, xls, pdf а остальные нет:
Как встроить такую проверку в даный код?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 1.8.2010, 17:42; Ответить: ZhukV
Сообщение #7


Ты не получиш формат файла из массива $_FILES
Там можна только вытаскать миме тип файлов.
Вот и по миме типу нужно производить выборку
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SOKOJI
SOKOJI
сообщение 1.8.2010, 19:07; Ответить: SOKOJI
Сообщение #8


(ZhukV @ 1.8.2010, 20:42) *
Ты не получиш формат файла из массива $_FILES
Там можна только вытаскать миме тип файлов.
Вот и по миме типу нужно производить выборку


Формат можно получить, но подделать его - как 2 пальца об асфальт.

[PHP]$fileParts = pathinfo($_FILES['xxx']['name']);
echo $fileParts['extension'];[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 1.8.2010, 20:51; Ответить: ZhukV
Сообщение #9


(SOKOJI @ 1.8.2010, 22:07) *
$fileParts = pathinfo($_FILES['xxx']['name']); echo $fileParts['extension'];

И на большом количестве серверов получаеш удвительный формат: *.tmp :rjunimagu::rjunimagu:
Я так уже много раз лоханулся!!!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 2.8.2010, 10:01; Ответить: ZhukV
Сообщение #10


(ZhukV @ 1.8.2010, 23:51) *
И на большом количестве серверов получаеш удвительный формат: *.tmp Я так уже много раз лоханулся!!!



SOKOJI, приношу свои извинения, поскольку сам толком не дочитал ответ взялся отписывать... :rolleyes:
Но все же лучше проверять тип файла по MIME, тогда будет лучшая гарантия, какой именно файл лёт. Формат же можна спокойно изменить...?

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) BuxarVideoUploader - Автоматическое скачивание и загрузка видео из любых/ на любые видео хостинги (YouTube, TikTok, Instagram, Facebook, Яндекс Дзен, Вконтакте, Одноклассники, Rutube, Dailymotion, d.tube, Telegram и т.д.
0 BuxarNET 1223 19.7.2023, 5:58
автор: BuxarNET
Открытая тема (нет новых ответов) Требуется помощник SEO специалиста для нескольких проектов
начинающий или middle
2 tiptopvkr 1470 2.12.2022, 12:11
автор: tiptopvkr
Открытая тема (нет новых ответов) Необходим SEO-специалист для нескольких проектов
2 tiptopvkr 1705 18.7.2022, 15:39
автор: yefedor
Открытая тема (нет новых ответов) FinFile - новые возможности для монетизации Ваших файлов!
3 FileXmaster 2077 25.7.2020, 16:10
автор: -Condis-
Открытая тема (нет новых ответов) Размещение ваших ссылок и статей на нескольких сайтах
28 maxmer 14709 4.2.2020, 18:37
автор: maxmer


 



RSS Текстовая версия Сейчас: 19.4.2024, 20:52
Дизайн