Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > HTML и CSS
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2013, 16:16   #1
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию HTML-форма, запрос для загрузки файла

Столкнулся с необходимостью залить файлы на сайт,
нашел такой код для HTML-формы:

Код:
<html><head>  <title>Загрузка файлов на сервер</title> </head>
<body>
      <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br>  
      <input type="submit" value="Загрузить"><br>
      </form>
</body></html>
скопипастил соответствующий скрипт для приема файлов на сервере,
проверил - все работает.

Но мне нужно заливать файлы программно (через TidHTTP)
не очень понимаю какой нужно создать запрос:
допустим мы хотим загрузить file.txt и, если я правильно понимаю, это имя будет присвоено переменной filename.
адрес сайта известен - http://site.ru/upload.php
так же известно, что это будет post-запрос

непонятно следующее:
куда записать enctype="multipart/form-data" ?
и куда деть filename="file.txt" ?
а так же, что помещать в тело запроса?


заранее спасибо =)
xrob вне форума Ответить с цитированием
Старый 26.07.2013, 19:11   #2
MindWork
Пользователь
 
Регистрация: 08.04.2009
Сообщений: 11
По умолчанию

Как-то так:

Код:
Uses
  IdHTTP,
  IdMultipartFormData;

// ...

Var
  FileName: String;
  IdHTTP: TIdHTTP;
  Data: TIdMultipartFormDataStream;
  Response: String;
begin
  FileName := 'C:\file.txt';

  Data := TIdMultipartFormDataStream.Create;
  Data.AddFile('filename', FileName, 'multipart/form-data');

  IdHTTP := TIdHTTP.Create(nil);
  IdHTTP.Request.ContentType := 'multipart/form-data';
  try
    Response := IdHTTP.Post('http://site.ru/upload.php', Data);
    ShowMessage(response);
  finally
    IdHTTP.Destroy;
    Data.Destroy;
  end;
end;
MindWork вне форума Ответить с цитированием
Старый 26.07.2013, 20:25   #3
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

Причем тут HTML и CSS? это уже взаисмодейтсвие твоего декстопного приложения с сервером через протокол HTTP
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 27.07.2013, 00:02   #4
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

MindWork, спасибо за готовый код!
Проверил, все получилось! =)
+ узнал все, что хотел - файл все-таки помещается в тело запроса:
----------072713002407562
Content-Disposition: form-data; name="filename1"; filename="c://test.txt"
Content-Type: multipart/form-data

my_file
ololo! =)
----------072713002407562

а зеленые циферки, это, я так понимаю, что-то вроде тегов, ограничивающих запись,
причем они генерируются так, чтобы ни в одном из добавленных файлов не было совпадений с ними (правильно?)

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


Господин Лубышев, вы, скорее всего, не вникли в суть моего вопроса.
Он касается не столько взаимодействия приложения с сервером,
сколько того, как HTML-форма превращается в запрос, т.е. как браузер ее понимает.
И поэтому я счел, что HTML - наиболее подходящий раздел.
А если нет, где бы вы посоветовали ее создать?

Последний раз редактировалось xrob; 27.07.2013 в 00:34.
xrob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порядок загрузки DLL для исполняемого файла calypso Win Api 4 19.02.2013 23:56
форма загрузки файла ZET78 PHP 2 19.08.2010 22:37
HTML форма с двумя полями для текста и кнопкой типа submit. DiSpalL HTML и CSS 5 02.06.2009 12:59
Минимальное приложение для загрузки файла на FTP Gambler Работа с сетью в Delphi 6 29.01.2008 22:58