htmlbook.ru - Для тех, кто делает сайты
Статьи Книги Шаг за шагом Рецепты Форум Графика для Web
Главная страница > Статьи > Формы > Отправка файла

Отправка файла

Влад Мержевич

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

Поле для отправки файла создает элемент формы в виде текстового поля для ввода имени файла, который пересылается на сервер. Поле создается следующим образом.

<form enctype="multipart/form-data" method="POST">
<input type="file" параметры>
</form>

Параметры формы enctype="multipart/form-data" нужен для корректной передачи файла. Если его не указать, будет передан лишь путь к файлу. Дополнительные параметры те же, что и для текстового поля и показаны в табл. 1.

Табл. 1. Параметры поля для отправки файла
Параметр Описание
name Имя поля. Предназначено для того, чтобы обработчик формы мог идентифицировать это поле.
maxlength Максимальное количество символов разрешенных в тексте.
size Ширина поля.

Поскольку объем файлов обычно достаточно большой, то для их отправки на сервер необходимо использовать метод POST, как показано в примере 1.

Пример 1. Создание поля для отправки файла

Валидный HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Отправка файла</title>
</head>
<body>

<form action="/cgi-bin/handler.cgi" enctype="multipart/form-data" method="post">
<p><b>Пожалуйста, укажите рисунок, который следует добавить:</b></p>
<p><input type="file" size="30"></p>
<p><input type="submit" value="Отправить"></p>
</form>

</body>
</html>

В результате получим следующее (рис. 1).

Рис. 1

Рис. 1. Вид поля для отправки файла

Статья опубликована: 12.09.2005 Последнее обновление: 30.03.2008

Прежде, чем писать комментарий к статье, примите во внимание следующие моменты.

  1. Не задавайте вопросы в комментариях, для этой цели предназначен форум, где вы получите нужную помощь.
  2. Удаляются любые комментарии, которые:
    • включают множество ошибок;
    • написаны безграмотно;
    • не имеют отношения к данной статье;
    • не содержат никакой полезной информации для посетителей.
  3. Для выделения отдельных слов используйте следующие команды: [b]жирный[/b], [i]курсив[/i], [color=цвет]цветной текст[/color], [tag]тег[/tag], [var]параметр[/var], [code]пример[/code].
  4. Потренироваться в написании комментариев вы можете в песочнице.

Комментарии к статье

Антон

20.10.2006

Не фига не понятно! А в какую папку будет загружен этот файл?

Антон

20.10.2006

Очень плохо!

Влад Мержевич

23.10.2006

Серверная программа, указаная в параметре action тега FORM, получает указанный файл, а затем уже делает с ним то, что захотелось разработчику. В том числе устанавливает папку для загрузки файла.

eagleow

09.01.2007

На бесплатном хостинге nm.ru добавить такую форму не удастся. Если убрать параметр enctype либо поставить метод POST, вместо файла отправляется его имя, в противном случае возникает ошибка, как будто часть полей не заполнены.

eagleow

09.01.2007

Имеется в виду почтовая форма.

Антоша

09.01.2007

Бесплатный хостинг -- это несерь?зно.
Конечно в случае с nm.ru и прочими narod.ru вам многое из возможного не удастся.

Сергей

09.01.2007

А ктонибудь анкеты создавал на narod.ru?
чего-то мне на майл не приходят результаты заполнения анкет

Что вы знаете по этому поводу?

Читател (Мас)

10.04.2007

Эта статья посвящена всеголиш созданию формы и е? стилезации. Здесь и не должно было расказываться о том "КАК ПРИНЯТЬ ФАЙЛ!", "КУДА ЕГО СОХРАНИТЬ!". Читайте документацию по CGI, PERL, PHP. Там вс? подробно написано.
Сайт www.php.net, кпримеру... Автор не ставил цели описывать серверные языки или языки WEB-програмирования. HTML - это не язык програмирования, это язык разметки страницы. Т.е. внимательнее читайте статьи и начинайте с азов. Средствами HTML невозможно обрабатывать формы на сервере, следовательно нельзя загружать информацию(или файлы).

HTMLCODER.exe

08.06.2007

файл отправляется на скрипт, указанный в параметре action (<FORM action="имя скрипта">) формы.
А как и куда файл попадет это уже дело скрипта.
(Файл ловится из $_FILE['имя файлового <INPUT'>а'] на PHP , если комуто это чтото говорит)

Owl

02.07.2007

картина расплывчатая,мутная..придется спросить!
Условие:
Отправили файл на скрипт ->
-> этот скрипт его обработал и отослал назад на страничку ->
-> файл должен отобразиться на другой странице или на текущей.
Вопрос:
Как скрипт и ХТМЛ поймут друг друга на какой страничке и что именно в этом месте на странице надо отобразить файл?этому месту нужен какой-то тэг для того чтобы принимаемый со скрипта файл видел куда ему идти?

wd

03.07.2007

А как можно указать тип файлов?

Iobar

03.07.2007

Тип файла пишут после точки

HTMLCODER,exe

07.07.2007

>А как можно указать тип файлов?
хтмл этого не может.
Можно выйти из положения великим и могучим Жабоскриптом
а проще просто сделать все на скрипте
имя файла вот $_FILE['input']['basename']
а так можно записать расширения [jpg|gif|bmp|png]
(регекспом)
отвечаю Owl, 02.07.2007:
опять таки скрипт сделает все сам, если его написатьsmile
Хтмл всеголиш продукт работы скрипта
в случае с примером выше на РНР вот как будет:
echo("<img src=\"uploads/".$_FILE['input']['basename']."\" />";
Если мы загружали файл с именем vasya.gif, получим
<img src="uploads/vasya.gif" />
(ну аттрибуты я приводить не стал, но если мы хотим изображения на странице "файл загружен", можно указать размеры, ну или считать их из фйала через GD а из bmp с размерами до 255 я и так считать могу 19й байт - ширина и 23й байт - высота
впрочем после думаю что после 255 тоже можно вручную можна было
просто байты назад идут:
19-26 байты при ш. 14 в.98
0e 00 00 00 62 00 00 00

19-26 байты при ш. 164 в.958
a4 00 00 00 be 03 00 00

поясняю последний пример:

габариты имеют макс. 4 байта (32 бита) и записаны в них "справа налево"
и т. о.
be 03 00 00 = 00 00 03 be = 3be,
a4 00 00 00 = 00 00 00 a4 = a4.

29й байт это количество битов для одного пикселя.
например в 24х битном bmp там стоит "18" (24 в 16-ричной нотации)

если речь идет о trueColor bmp (24 bit)
то собственно данные начинаются с 55ого байта
причем на пиксель идет 3 байта в формате BGR
(RGB наоборот, а так обычные хтмл цвета
красный например 00 00 ff будет
)
причем первый триплет, к примеру , это левый нижний пиксель.

тоест, упрощенно:
линия из байтов
1010010101000101011010011
станет
10011
10110
00010
10101
10100
если 5 было задано как высота и ширина.
1 значит ff ff ff
0 значит 00 00 00

байты на РНР пишутся так:


\xnn

где nn это сам байт
а х так и пишется

как заменять это уж сами думайте


HTMLCODER.exe

07.07.2007

P.S.
если кто хочкт поэкспериментировать,
нужен Hex Editor

HTMLCODER.exe

07.07.2007

все сказанное про RGB относится _ТОЛЬКО_ к 24х битным bmp.

HTMLCODER.exe

07.07.2007


>Бесплатный хостинг -- это несерь?зно.
>Конечно в случае с nm.ru и прочими narod.ru вам многое из возможного не удастся.
вот тут бесплатно
http://hut.ru/
c PHP и прочими прибамбасами, в т. ч. и загрузка файлов

Dagger

23.06.2008

И на юкозе тож не ид?т!!!

Z-MODe

24.06.2008

а кто скажет как свой стиль для такой формы сделать? ну кнопку свою точнее?smile

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

Имя
Комментарий

Сохранить имя (используется cookie)

Поиск по сайту

Формы
Разделы
Теги по теме

FORM
Тег FORM устанавливает форму на веб-странице. Форма предназначена для обмена данными между пользователем и сервером.

INPUT
Тег INPUT является одним из разносторонних элементов формы и позволяет создавать разные элементы интерфейса и обеспечить взаимодействие с пользователем.

Copyright 2002–2008 Влад Мержевич, по всем вопросам пишите по адресу: vlad@htmlbook.ru

О сайте | Планы на будущее | Использование сайта | Борьба с ошибками | Технологии | Поддержать проект