Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > отправка POST запроса


Автор: Napster2k 30.12.2012, 14:23
как отправить ТОЛЬКО файл на сервер?
в данный момент пользуюсь IdHTTP

требуется подделать вот такой запрос
Код

POST /upload.jsp?cuid=50372113 HTTP/1.1
Host: site.com
Connection: keep-alive
Content-Length: 82726
file-name: 123123.rar
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3

<тут уже сам файл>

в Content-Length - размер файла
то есть отправляется тупо сам файл (MimeType пустой). Пробывал через TStringList и TIdMultiPartFormDataStream, но они создают дополнительные заголовки.

Автор: Чучмек 30.12.2012, 22:32
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 str:TFileStream;
begin
if OpenDialog1.Execute then
  begin
  str:=TFileStream.Create(OpenDialog1.FileName,0);
  //str.Seek(0,soBeginning);
  IdHTTP1.Request.ContentLength:=str.Size;
  IdHTTP1.Request.CustomHeaders.Add('file-name: '+ExtractFileName(OpenDialog1.FileName));
  IdHTTP1.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11';
  IdHTTP1.Request.Accept:='*/*';
  IdHTTP1.Request.AcceptEncoding:='gzip,deflate,sdch';
  IdHTTP1.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4';
  IdHTTP1.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.3';
  IdHTTP1.Request.ContentType:='';
  IdHTTP1.Post('http://site.com/upload.jsp?cuid=50372113',str);
  str.Free;
  end;
end;

Автор: Napster2k 31.12.2012, 00:02
Хм.. уже пробывал файлстрим, но чтото недопилил.
Спасибо, именно то, что нужно. Работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)