Post запрос со сжатым вложением deflate (gzip)

Vinni059
Дата: 25.05.2011 19:34:03
Передаю файл по http, как сжать его в deflate(gzip), точнее с помощью чего?
Вычитал в инете, что в Indy 10 как-то это можно сделать либо использовать zlib, не то не то пока результатов не дали.
DmSer
Дата: 25.05.2011 21:46:05
Ни разу не слышал, о сжатии при передачи на сервер. Сжимается gzip-ом информация, запрашиваемая с сервера. Разумеется могу ошибаться.
MMM_Corp
Дата: 25.05.2011 22:31:21
с каких это пор веб-сервер принимает пожатые данные?)

П.С. также впервые про такое слышу.
__Avenger__
Дата: 26.05.2011 08:44:47
MMM_Corp,

Если на свой скрипт отсылать данные, то мало того, что их можно пожать (хоть rar, хоть gzip), но их еще можно и зашифровать.
Vinni059
Дата: 26.05.2011 13:14:13
__Avenger__,
скрипт не мой, сервер разработан сторонней компанией, но
"Изображения можно загружать в сжатом виде, используя спецификацию http. т.е. сжимать можно алгоритмом deflate или gzip,
при этом необходимо добавить заголовок Content-Encoding с соответствующим значением (deflate или gzip))"- выдержка из ТЗ

Пробовал с помощью Zlib(стандартная библиотека поставляется с delphi) сжать файл, использовал вот эту процедуру
procedure CompressFile(const sFileIn : string; const sFileOut : string; const Level : TCompLevel = clDefault);
var
 inStream, outStream: TMemoryStream;
begin
 inStream:=TMemoryStream.Create;
 outStream:=TMemoryStream.Create;
 try
  inStream.LoadFromFile(sFileIn);
  with TCompressionStream.Create(TCompressionLevel(Level), outStream) do
   try
    CopyFrom(inStream, inStream.Size);
   finally
    Free;
   end;
   outStream.SaveToFile(sFileOut);
  finally
   outStream.Free;
   inStream.Free;
  end;
end;
Затем отправляю файл с помощью Indy Idhttp
    idhttp1.Response.ContentType:='application/octet-stream';
    idhttp1.Response.ContentEncoding:='deflate,gzip';
    R:=idhttp1.Post('http://Url/181379.gz',s1);
выдает ошибку HTTP/1.1 500 Internal Server Error, есть подозрение, что сжимает Zlib не тем алгоритмом (не gzip)
То что можно сжимать-это 100 пудово, а вот как правильно это сделать, кто-нить может юзал и подскажет...
Рябов А.С.
Дата: 26.05.2011 16:08:29
Vinni059,

я бы на твоем месте, если конечно это воможно, посмотрел для начала, что реально посылается на сервер, когда закидываешь файлик через IE. Я делал это с помощью ieHTTHeaders. Смотришь, что посылается, и добиваешься в своем коде того же самого.
MMM_Corp
Дата: 26.05.2011 18:34:25
а на серваке установлен мод дефлейта вообще?
да и както всеравно на прием дефлейт... чтото экзотическое совсем...
MMM_Corp
Дата: 26.05.2011 18:40:42
автор
что сжимает Zlib не тем алгоритмом (не gzip)

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