Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WebBrowser проблемы с POST 
:(
    Опции темы
mkmv
Дата 25.8.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.6.2005

Репутация: нет
Всего: нет



отправляю base64-кодированный файл в POSTом на сервер с аутентификацией.

Файл больше 64 кб не уходит smile( Почему? Ведь base64 это то же текст... IE говорит "Действие отменено" а если ходить через проксю - SQUID говорит "Zero Sized Reply"

Хотя обычный текст размером 3 мб тоже не уходит. И без аутентификации...

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    WebBrowser1: TWebBrowser;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Base64Unit;

{$R *.dfm}
function UrlEncode(Str: string): string;
 function CharToHex(Ch: Char): Integer;
 asm
  and eax, 0FFh
  mov ah, al
  shr al, 4
  and ah, 00fh
  cmp al, 00ah
  jl @@10
  sub al, 00ah
  add al, 041h
  jmp @@20
 @@10:
  add al, 030h
 @@20:
  cmp ah, 00ah 
  jl @@30 
  sub ah, 00ah 
  add ah, 041h 
  jmp @@40 
 @@30: 
  add ah, 030h 
 @@40: 
  shl eax, 8 
  mov al, '%' 
 end; 
 
 var 
 i, Len: Integer; 
 Ch: Char; 
 N: Integer; 
 P: PChar; 
 begin 
 Result := ''; 
 Len := Length(Str);
 P := PChar(@N); 
 for i := 1 to Len do 
 begin
  Ch := Str[i];
  if Ch in ['0'..'9', 'A'..'Z', 'a'..'z', '_'] then
  Result := Result + Ch
  else
  begin
  if Ch = ' ' then
  Result := Result + '+'
  else
  begin
  N := CharToHex(Ch);
  Result := Result + P;
  end;
  end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  Base64MaxLength = 72;
var
  hFile:Integer;
  base64String:String;
  base64File:TextFile;
  Base64:TBase64;
  Buf:Array[0..2] Of Byte;
begin
  base64String:='';
  hFile:=FileOpen('file.zip',fmOpenReadWrite);
  AssignFile(base64File,'file.zip.b64');
  Rewrite(base64File);
  FillChar(Buf,SizeOf(Buf),#0);
  repeat
    Base64.ByteCount:=FileRead(hFile,Buf,SizeOf(Buf));
    Move(Buf,Base64.ByteArr,SizeOf(Buf));
    base64String:=base64String+CodeBase64(Base64);
  if Length(base64String)=Base64MaxLength then
    begin
      Writeln(base64File,base64String);
      base64String:='';
    end;
  until Base64.ByteCount < 3;
    Writeln(base64File,base64String);
    CloseFile(base64File);
    FileClose(hFile);
  Memo1.Lines.LoadFromFile('file.zip.b64');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile('file.zip.b64');
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  strPostData: string;
  Data:Pointer;
  URL,Flags,TargetFrameName,PostData,Headers:OleVariant;
begin
  strPostData:='file='+URLEncode(Memo1.Text);
  PostData :=  VarArrayCreate([0, Length(strPostData) - 1], varByte);
  Data := VarArrayLock(PostData);
  try
    Move(strPostData[1], Data^, Length(strPostData));
  finally
    VarArrayUnlock(PostData);
  end;
  URL := 'http://site.org/postfile.php';
  Flags := EmptyParam;
  TargetFrameName := EmptyParam;
  Headers := 'Content-Type: application/x-www-form-urlencoded'+ #10#13#0;
  WebBrowser1.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
end;

end.




Это сообщение отредактировал(а) mkmv - 25.8.2006, 12:00
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.