Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
Facebook 0 Likes
Twitter 0 Followers
Instagram 0 Followers
Pinterest 0 Followers
YouTube 0 Subscribers
Подписаться
Маркетер
Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • PHP
  • Готовые скрипты

Загрузка нескольких файлов одним браузером

  • 14.06.2010
Total
0
Shares
0
0
0
0
0
0

Если же пользователю необходимо загрузить несколько файлов, при этом использовать только один браузер, то самое простое решение в этом случае использовать Flash. Если же нет возможности использовать данную платформу, то можно применить Java applet или же, в крайнем случае, ActiveX. Если же необходимый плагин недоступен, то пользователь увидит стандартный HTML-элемент для загрузки файла. Для решения такой проблемы можно использовать встроенную в браузеры возможность для загрузки нескольких файлов одновременно. На сегодняшний день единственный браузер, который не поддерживает такую возможность, является Internet Explorer (это не относиться к девятой версии). Все остальные наиболее известные браузеры, такие как Opera 9 и выше и ее ранние версии 3.5 – 6.05, Chrome 3.0.191.0+, Firefox 3.6+ и Safari 4.0.1+ предоставляют такую возможность. Для этого будет достаточно приблизительно такого кода:

[sourcecode language=’html’]


[/sourcecode]

К такой конструкции оказался подготовленным и РHР. Для него в параметре «name» имеются квадратные скобки. Он самостоятельно разложит все загружаемые файлы по местам, а именно по элементам массива $_FILES. Единственное условие не использовать при этом «Оперу», поскольку она, начиная с версии 3.5, во время применения мультизагрузки, посылает файлы в контейнер «multipart/mixed», а РНР этого не понимает. Но не стоит отчаиваться, данную ситуацию можно поправить.

Приняв такой запрос РНР будет помещать содержимое в массив $_POST, а именно в $_POST[‘file’][0]. После чего нужно будет лишь распарсить и переложить информацию в $_FILES. Главное чтобы была отключена директива magic_quotes_gpc. В качестве парсера можно использовать PECL-модуль mailparse. Для наглядности приведу пример. В данном примере ожидается параметр «file», но это значение без труда можно вынести в настройку.

[sourcecode language=’php’]if (isset($_POST[‘file’], $_POST[‘file’][ 0])) {

if ($idx = strpos($_POST[‘file’][ 0], “\n”)) {
$bound = substr($_POST[‘file’][ 0], 2, $idx-2);

$body = “MIME-Version: 1.0\nContent-type: multipart/form-data; boundary={$bound}\n\n”.
$_POST[‘file’][ 0];

unset($_POST[‘file’][ 0]);
$f = &$_FILES[‘file’];

$f[‘name’] = $f[‘type’] = $f[‘tmp_name’] = $f[‘error’] = $f[‘size’];

$msg = mailparse_msg_create();

if (mailparse_msg_parse($msg, $body)) {
$i = 0;

foreach(mailparse_msg_get_structure($msg) as $st) {

$section = mailparse_msg_get_part($msg, $st);

$data = mailparse_msg_get_part_data($section);

if ($data[‘content-type’] == ‘multipart/form-data’) {
continue;
}

ob_start();
if (mailparse_msg_extract_part($section, $body)) {
$tmp = tempnam(sys_get_temp_dir(), ‘php’);
file_put_contents($tmp, ob_get_clean());

$f[‘name’][$i] = $data[‘disposition-filename’];
$f[‘type’][$i] = $data[‘content-type’];
$f[‘tmp_name’][$i] = $tmp;
$f[‘error’][$i] = 0;
$f[‘size’][$i] = filesize($tmp);

$i++;
} else {
ob_end_clean();
}
}
}
unset($f);

mailparse_msg_free($msg);
}
}[/sourcecode]

Total
0
Shares
Телеграфировать 0
Поделиться 0
Репост 0
Твитнуть 0
jokar

Предыдущий материал
  • JavaScript

Создание фото-ленты на javascript

  • 14.06.2010
  • jokar
Read More
Следующий материал
  • Блог

Меняем – не меняем?..

  • 14.06.2010
  • dins1904
Read More
Вас также может заинтересовать
Read More
  • Codeigniter

Создание собственного обработчика 404 ошибок в CodeIgniter

  • jokar
  • 07.10.2012
Read More
  • PHP

Переход на шаблонный дизайн

  • Алексей Волков
  • 10.02.2006
Read More
  • PHP

Экстремальный стиль для PHP

  • Алексей Волков
  • 29.12.2005
Read More
  • PHP

Секреты PHP-функций для работы с массивами. Обработка данных и сортиров

  • Алексей Волков
  • 15.11.2005
Read More
  • PHP

Секреты PHP-функций для работы с массивами. Создание массивов

  • Алексей Волков
  • 31.08.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 4

  • Алексей Волков
  • 04.08.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 3

  • Алексей Волков
  • 29.07.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 2

  • Алексей Волков
  • 15.07.2005

Добавить комментарий

Для отправки комментария вам необходимо авторизоваться.

Свежие посты
  • Рассылка как продукт
    • 24.07.20
  • Google назвал лучшие приложения App Store за 2018 год
    • 14.12.18
  • Онлайн-конференция интернет-магазин от “А до Я” CyberE-com 2018
    • 25.05.18
  • Бесплатная онлайн-конференция по управлению репутацией
    • 04.12.17
  • Открыта регистрация на CyberMarketing-2017
    • 19.10.17
Маркетер
  • О проекте
  • Информационное спонсорство
  • Рекламным агентствам
  • Ссылки
(с) ООО "Маркетер". Официальный сайт. Маркетер: Статьи про рекламу, маркетинг, public relations, интернет

Введите ключевые слова для поиска и нажмите Enter