Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.09.2014, 23:57
magsim magsim вне форума
Прохожий
 
Регистрация: 03.09.2009
Сообщения: 7
Репутация: 10
По умолчанию IDHttpServer POST данные?

Всем доброе время суток!
Подскажите пожалуйста как используя компонент IdHttpServer
получить:
1. Переменные POST
2. Файлы переданные в POST
В данный момент пробовал следующий код:
Код:
procedure TForm1.serverCommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
 str,str_fil:string;
 fil:string;
 ext:string;
 PostedFile:TMemoryStream;
 text:string;
 tsr : tsearchrec;
 foto_list:string;
begin
  str := StringReplace(arequestinfo.document,'/','\',[rfReplaceAll]);
  Delete(str,1,1);
  str_fil := ExtractFileName(str);
  fil := patch+'server\'+str;
  ext := ExtractFileExt(str_fil);
  if(str_fil  = 'upload.php')then
   begin
     PostedFile:=TMemoryStream.Create;
     PostedFile.LoadFromStream(ARequestInfo.PostStream);
     PostedFile.SaveToFile(patch+'server\script\user\0\'+UTF8Decode(ARequestInfo.Params.Values['namesendfile']));
      PostedFile.SaveToFile(patch+'server\script\user\0\m\m_'+UTF8Decode(ARequestInfo.Params.Values['namesendfile']));
     AResponseInfo.WriteContent;
     AddLog('Файл загружен: '+UTF8Decode(ARequestInfo.Params.Values['namesendfile']));

     PostedFile.Free;
     ARequestInfo.PostStream.Free;
     exit;
   end;

Файл приходит и записывается в папку, но файл имеет лишению информация которая была отправленная вместе с файлом в POST
Код:
------------ei4ei4KM7ei4Ef1KM7KM7ae0cH2ae0
Content-Disposition: form-data; name="Filename"

DSC03262242.jpg
------------ei4ei4KM7ei4Ef1KM7KM7ae0cH2ae0
Content-Disposition: form-data; name="Filedata"; filename="DSC03262242.jpg"
Content-Type: application/octet-stream

яШяа JFIF ,,  ябµExif  II*          ћ       ѕ    	   Г ............  (это данные самого изображения) 

Вопрос^
1. как принять только файл?
2. Как принять переменные переданные в POST ?
Ответить с цитированием
  #2  
Старый 29.09.2014, 00:16
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

TIdMultipartFormDataStream
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 29.09.2014, 00:20
magsim magsim вне форума
Прохожий
 
Регистрация: 03.09.2009
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от PhoeniX
TIdMultipartFormDataStream
Может есть небольшой пример или наброосок ?
Ответить с цитированием
  #4  
Старый 29.09.2014, 08:34
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

У меня под рукой нету (не пишу на Delphi уже полгода), но гугл всемогущий тебе поможет
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 30.09.2014, 18:05
magsim magsim вне форума
Прохожий
 
Регистрация: 03.09.2009
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от PhoeniX
У меня под рукой нету (не пишу на Delphi уже полгода), но гугл всемогущий тебе поможет
Насколько я выяснил tidmultipartformdatastream ,может только собирать данные для дальнейшей отправки например компонентном idHTTP.
А мне нужно наоборот разобрать данные PostStream.
А вот чем не знаю.
Ответить с цитированием
  #6  
Старый 30.09.2014, 19:03
magsim magsim вне форума
Прохожий
 
Регистрация: 03.09.2009
Сообщения: 7
Репутация: 10
По умолчанию

Как читать сами переменные POST я разобрался.
Но файлами остлся вопрос, подскажите пожалуйста как допустим читать полученные данные с определенного места?
Код:
Content-Disposition: form-data; name="Filename"
 
DSC03262242.jpg
------------ei4ei4KM7ei4Ef1KM7KM7ae0cH2ae0
Content-Disposition: form-data; name="Filedata"; filename="DSC03262242.jpg"
Content-Type: application/octet-stream
Так что бы можно было отрезать заголовок application/octet-stream тут он оканчивается, и произвести запись без него ?
Ответить с цитированием
  #7  
Старый 30.09.2014, 21:26
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

http://stackoverflow.com/questions/1...formdatastream
Цитата:
... the AResponseInfo.PostStream property will contain the raw MIME data that the client posted. You can use the TIdMessageDecoderMIME class to parse it.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter