Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Delphi, POST и кодировка файла (https://forum.antichat.xyz/showthread.php?t=63065)

dos999 29.02.2008 12:09

Delphi, POST и кодировка файла
 
Клиент написан на Delphi отправляет файл

Код:

...
const
  URL_POST = 'hots.ru/uploadtest.ashx';
...
procedure POSTFile(Filename: String);
var
 TotalDataCount, i: Integer;
 IdHTTP: TIdHTTP;
 LPostStream: TIdMultiPartFormDataStream;
 LResultStream: TStringStream;
 LpostString: String;
 function PostDecode(AString: String): String;
 begin
  Result := CharReplace(AString, '%', ' ');
  Result := CharReplace(Result, '&', ' ');
 end;
begin
 IdHTTP := TIdHTTP.Create(nil);
 try
  IdHTTP.MaxLineLength := 0; //koi8-r windows-1252
  LPostStream := TIdMultiPartFormDataStream.Create;
  LpostString:= FileToString(Filename);
  LPostStream.AddFormField('UserData', PostDecode(LpostString));
  LResultStream := TStringStream.Create('');
  try
    try
      IdHTTP.Post(URL_POST, LPostStream, LResultStream);
    except
      on E:Exception do
      begin
        Showmessage(E.Message);
      end;
    end;
    showmessage(LResultStream.DataString);
  finally
    LPostStream.Free;
    LResultStream.Free;
  end;
 finally
  IdHTTP.Free;
 end;
end;

файл uploadtest.ashx содержит скрипт
Код:

string x = "sdsdsd";
System.IO.File.WriteAllText(@"c:\text1.txt", x);

x это данные которые он принимает... файл сохраняеться но откуда то появляються лишние байты, пробовал менять кодировку, скорее всего дело в ней, но никак не могу подобрать нужную
Кто сталкивался с такой проблемой... прошу помоч.

Jes 29.02.2008 12:34

всмысле 'лишние байты' ?

dos999 29.02.2008 12:40

просматриваю полученный файл в хексе и вижу в некоторых строчках лишние байты, которые соответственно смещают код, пробовал менять кодировку ... приходт опять же похожий файл... но всё таки изменённый... и при каждой кодировке изменения эти разные.

А чёть не забыл, если это важно, исходный файл mdb, я его сжимаю в zip потом переименовываю в txt, оставшийся после отправки файл обратно распоковываеться нормально, а вот принятый никак...

dos999 29.02.2008 18:36

Разобрался... надо просто было делать проще
Код:

    LpostString:= FileToString(Filename);
    LResultStream := TStringStream.Create(LpostString);
    LPostStream.AddObject('UserData', 'image/GIF', LResultStream);

и потом постовать...

хз почему но файл приходит с 2 лишними байтами в начале(Enter)....пришлось просто при Get'е их обрубать...

Jes 04.03.2008 13:42

Цитата:

Сообщение от dos999
файл приходит с 2 лишними байтами в начале(Enter).

вполне логично , они отделяют заголовок от самого контента ...
Closed...


Время: 14:29