アップロードおよびダウンロードファイルidhttp

ユニットUnit1は、

インタフェースが

使用する
  Windowsの、メッセージ、sysutilsの、バリアント、クラス、グラフィックス、コントロール、フォーム、
  ダイアログ、IdBaseComponent、IdComponent、IdTCPConnection、IdTCPClient、
  IdHTTP、StdCtrls; 

入力
  TForm1 = クラス(TFormは)
    BTN1:のTButtonと、
    IdHTTP1:TIdHTTP。
    手順btn1Click(送信者:TObjectを);
    手順FormCreate(送信者:TObjectを);
  プライベート
    { プライベート宣言} 
  公共
    { 公開宣言} 
  エンド

VAR 
  をForm1:TForm1; 

実装

{$ R * .DFM } 

手順TForm1.btn1Click(送信者:TObjectを)。
VAR 
  ILEN:整数; 
  SFN、SPATH:文字列; 
  MS、MS2:TMemoryStream。
開始
  MS: = TMemoryStream。作成します試す
    SPATHを: = ExtractFilePath(application.ExeName)+ ' a.bmp ' ; 
    SFN: = ExtractFileName(SPATH)。
    ILEN: = 長さ(SFN)。

    MS.WriteBuffer(ILEN、はsizeof(ILEN))。
    MS.WriteBuffer(SFN [ 1 ]、ILEN)。

    MS2: = TMemoryStream。作ります
    MS2.LoadFromFile(SPATH)。

    ILEN: = MS2.Size。

    MS.WriteBuffer(ILEN、はsizeof(ILEN))。
    
    MS.CopyFrom(MS2、ILEN)。
    MS2.Free; 
    IDHTTP1.post(' http://127.0.0.1:2111 '、MS、ゼロ)。
  最後に
    MS.Free; 
  エンド;
エンド; 

手順TForm1.FormCreate(送信者:TObjectを);
開始
//   IdHTTP1.Host:= '127.0.0.1'を、
//   IdHTTP1.Port:= 2111; 
エンド; 

終わり




ユニットUnit1は、

インタフェース

の使用
  Windowsの、メッセージ、sysutilsの、バリアント、クラス、グラフィックス、コントロール、フォーム、
  ダイアログ、IdBaseComponent、IdComponent、IdTCPServer、IdCustomHTTPServer、
  IdHTTPServer。

入力
  TForm1 = クラス(TFormは)
    IdHTTPServer1:TIdHTTPServerと、
    手順IdHTTPServer1CommandGet(AThread:TIdPeerThread; 
      ARequestInfo:TIdHTTPRequestInfo; 
      AResponseInfo:TIdHTTPResponseInfo)。
    手順FormCreate(送信者:TObjectを);
  プライベート
    { プライベート宣言} 
  公共
    { 公開宣言} 
  エンド

VAR 
  をForm1:TForm1;

実装

{ $ R&LT * DFM。} 

手順TForm1.IdHTTPServer1CommandGet(AThread:TIdPeerThread; 
  ARequestInfo:TIdHTTPRequestInfo; AResponseInfo:TIdHTTPResponseInfo); 
VAR 
  ILEN:整数、
  SDATA、SFN:文字列; 
  MS:TMemoryStream; 
  pDataを:PChar型; 
始める
  SDATAを: = ARequestInfo .UnparsedParams;
   IF SDATA <> 「」は、 次に
  開始
  { 
   単純なメッセージ・フォーマット、データ長、データ1,2のデータ長、データ2の自定義
   
   |コンテンツファイル| |ファイルのコンテンツ長|名|ファイル名の長さを
   | 5。 | a.bmp | 17788 | 0x10101010101001010100101 ... | 

  } 

    MS: = TMemoryStream。作成します。;
     トライ
      // ファイル名を読み取るために1。 
      MS.WriteBuffer(SDATA [ 1。 長さ(SDATAを)]); 
      MS.Position: = 0 ; 
      MS.ReadBuffer(ILEN、はsizeof(ILEN)); // リードファイル名の長さ
      はsetLength (SFN、ILEN); 
      MS.ReadBuffer(SFN [ 1。、ILENは]); // リードファイル名
      // 2ファイルの内容を読み取る 
      MS.ReadBuffer(ILEN、はsizeof(ILENを)); // ファイル長の内容を読み取る
      (GetMemをpDataを、ILEN); 
      MS.ReadBuffer(pDataを^、ILEN); // ファイルの内容を保存した画像データであるpDataをを読ん

      // ファイルとして保存された3 
      MS.Clear; 
      MS.WriteBuffer(pDataを^、ILEN)。
      MS.SaveToFile(ExtractFilePath(Application.ExeName)   + SFN)。
    最後に
      MS.Free; 
    エンド;
  エンド;
エンド; 
 

手順TForm1.FormCreate(送信者:TObjectを);
開始
  IdHTTPServer1.DefaultPort: = 2111 ; 
  IdHTTPServer1.Active: = はtrue。
  Self.Caption: = ' 启动' ;
エンド; 

終わり

おすすめ

転載: www.cnblogs.com/tobetterlife/p/12169477.html