Как загрузить файл на сайт, используя HTML - PullRequest
2 голосов
/ 10 августа 2010

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

На стороне сервера находится .NET, но это не ASP.NET. Это означает, что я сам генерирую HTML-код, а не использую ASP.NET и работаю со строкой GET и потоком POST напрямую. Это хорошее упражнение, чтобы узнать, что происходит под капотом: D, особенно в наши дни, когда есть основа для всего.

Я пытался найти информацию об этом, но я нашел несколько подходов, некоторые из них javascript (что я пока хочу избегать) и множество готовых элементов управления. Я хочу сделать это сам, мне все равно, есть ли хороший, изящный и хорошо зарекомендовавший себя элемент управления ASP.NET ... я хочу понять, как он это делает со всеми его последствиями.

Ура!

Ответы [ 4 ]

4 голосов
/ 10 августа 2010

В HTML вам нужна форма с вводом type = "file" и атрибутом enctype формы, установленной в "multipart / form-data", а не по умолчанию "application / x-www-form-urlencoded".

Multipart / form-data определяется в RFC 2388 и будет вести себя иначе, чем приложение / x-www-form-urlencoded, которое вы анализировали в этом эксперименте до сих пор.Хотя это довольно просто.RFC должен дать вам все, что вам нужно знать, чтобы реплицировать, как свойство HttpRequest.Files работает в ASP.NET.

В качестве дополнительного расширения попробуйте отправить потоки из XMLHttpRequest на странице или HttpWebRequest в клиенте .NETприложения, используя как POST, так и PUT (вам, возможно, придется изменить настройки IIS, чтобы разрешить прохождение PUT), так как это дублирование работы над этим вместе с вашими экспериментами здесь будет охватывать некоторые знания, которые имеют реальную применимость, даже когда вы используете всеинструментарий.Другим расширением является попытка реализовать обе стороны обеих схем в RFC2617 без какой-либо помощи со стороны платформы (иногда это действительно полезно на стороне сервера).

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

3 голосов
/ 10 августа 2010

Я думаю, что следующая ссылка должна содержать необходимую информацию:

http://www.cs.tut.fi/~jkorpela/forms/file.html

В основном вам нужен тип ввода = "file" и для кодировки вашей формы установитемногокомпонентные / форма-данные.

2 голосов
/ 10 августа 2010
<input type="file" name="somename" size="n"> 

Вы положили это в форму, и hasta la vista baby!

1 голос
/ 10 августа 2010

Вы не можете выполнять загрузку файлов с использованием чистого HTML: вам нужно будет обрабатывать загруженные файлы на стороне сервера.

Вы можете проанализировать загруженные файлы из необработанных данных POST, если выхотите узнать, как это работает "под капотом" (см. здесь для примера того, как это сделать в ASP), но вам понадобится какой-то язык на стороне сервера, чтобы сделать это,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...