Delphi, POST и кодировка файла

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by dos999, 29 Feb 2008.

Thread Status:
Not open for further replies.
  1. dos999

    dos999 Elder - Старейшина

    Joined:
    15 Feb 2008
    Messages:
    137
    Likes Received:
    24
    Reputations:
    0
    Клиент написан на Delphi отправляет файл

    Code:
     ...
    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 содержит скрипт
    Code:
    string x = "sdsdsd";
    System.IO.File.WriteAllText(@"c:\text1.txt", x); 
    x это данные которые он принимает... файл сохраняеться но откуда то появляються лишние байты, пробовал менять кодировку, скорее всего дело в ней, но никак не могу подобрать нужную
    Кто сталкивался с такой проблемой... прошу помоч.
     
  2. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    всмысле 'лишние байты' ?
     
    1 person likes this.
  3. dos999

    dos999 Elder - Старейшина

    Joined:
    15 Feb 2008
    Messages:
    137
    Likes Received:
    24
    Reputations:
    0
    просматриваю полученный файл в хексе и вижу в некоторых строчках лишние байты, которые соответственно смещают код, пробовал менять кодировку ... приходт опять же похожий файл... но всё таки изменённый... и при каждой кодировке изменения эти разные.

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

    dos999 Elder - Старейшина

    Joined:
    15 Feb 2008
    Messages:
    137
    Likes Received:
    24
    Reputations:
    0
    Разобрался... надо просто было делать проще
    Code:
        LpostString:= FileToString(Filename);
        LResultStream := TStringStream.Create(LpostString);
        LPostStream.AddObject('UserData', 'image/GIF', LResultStream);
    и потом постовать...

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

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    вполне логично , они отделяют заголовок от самого контента ...
    Closed...
     
Thread Status:
Not open for further replies.