0

ftpput api を使用してサーバーにファイルをアップロードするようにこのプログラムをコーディングしました。動作していませんが、ファイルは配信されません。

コードは次のとおりです。

unit ftp3;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);

       var hInet, hConnect: HINTERNET; 

    local_file, 
    remote_file,
    user,remote_server,
    pass: pchar;

    begin 
    local_file := 'C:\Documents and Settings\Omair\Desktop\loggen.txt';
    remote_file := 'loggen.txt';
    user := 'my user';
    pass := 'my pass';
    remote_server := ' ftp.drivehq.com';

    hInet := InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
    hConnect := InternetConnect(hInet,
        remote_server, 
        INTERNET_DEFAULT_FTP_PORT,
        user, pass,
        INTERNET_SERVICE_FTP,
        INTERNET_FLAG_PASSIVE,
        0);

    ftpPutFile(hConnect, local_file, remote_file, FTP_TRANSFER_TYPE_BINARY, 0);

    InternetCloseHandle(hInet);
    InternetCloseHandle(hConnect);

    end;   

  end.
4

3 に答える 3

4

の戻り値を確認し(成功FtpPutFileすると返されるはずです)、詳細なエラーを取得します。TRUEGetLastError

于 2009-09-04T16:43:01.233 に答える
2

まず、Microsoftの組み込みFTPプログラムで同じファイルをFTPで転送できることを確認して、プログラムの主要なエラーを除外します(または必要に応じて除外します)。

コマンドラインから、次のように入力します

FTP ftp.drivehq.com(リターン)

ログインプロンプトが表示されない場合は、Delphiコード以外で問題が発生しています。インターネット接続が制限されている(おそらくポート25、FTPポートがファイアウォール/ルーターによってブロックされている)か、FTPアドレス自体に問題があります。

プロンプトが表示された場合は、求められたらユーザー名とパスワードを入力してください。ここで入力します

BIN(リターン)
PUT'C:\ Documents and Settings \ Omair \ Desktop \ loggen.txt'(戻り値)

それがあなたのファイルを送るように思われる場合(ちなみに、FTPプログラムを終了するにはBYEと入力してください)、問題はFTPプロセス自体ではなくDelphiコードにあります(ここの他の回答はあなたがチェックする必要があることを有益に指摘していますDelphiコード自体で)。ファイルが送信されないように思われる場合は、Delphiコードを作成する前に、その問題の解決を検討することをお勧めします。

 

このような「オンライン」作業を行うときは、システムの「もう一方の端」をテストするための別のプロセスを常に取得しようとします。これは、自分のコードを使用しないものです。

于 2009-09-05T07:44:04.323 に答える