使用idftp上传视频到群晖nas

需要做一个类似像印象笔记的软件,其中用到ftp上传,摸索了一下,代码如下:

implementation
uses IdFTPCommon; //引用的单元
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);//连接ftp服务器
var
  i: integer;
  tr: Tstrings;
begin
  IdFTP1.Quit;
  tr := TStringlist.Create;
  IdFTP1.Host := hostTxt.Text; //FTP服务器地址
  IdFTP1.Port := StrToInt(PortTxt.Text); //FTP服务器端口号
  IdFTP1.Username := UserTxt.Text; //FTP服务器用户名
  IdFTP1.Password := pwdTxt.Text; //FTP服务器密码
  IdFTP1.Connect(); //连接到ftp
  IdFTP1.ChangeDir('music/clips');//需要上传的目标文件夹
  IdFTP1.List(tr); //得到目录下所有文件列表
  FFTxt.Items.Assign(tr);
  tr.Free;
  self.FFTxt.Items.Add(IdFTP1.RetrieveCurrentDir);
end;
procedure TForm1.Button2Click(Sender: TObject);//上传文件
var
  if IdFTP1.Connected then begin
   try
      IdFTP1.TransferType := ftBinary;

      IdFTP1.Put(AnsiToUtf8('d:\Westworld.S02E02.mp4'), AnsiToUtf8('1.mp4'));

    finally

       //完成清除工作

    end;
  end;
end;
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;//开始传输
  const AWorkCountMax: Integer);
begin  
  ProgressBar1.Max:=AWorkCountMax;
end;

procedure TForm1.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);//传输完成
begin
  showmessage('上传成功!');
  ProgressBar1.Position:=0;
end;

procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;//正在传输
  const AWorkCount: Integer);
begin
  if AWorkMode = wmWrite then//判断是否是上传操作,下载(wmRead)
  begin
   ProgressBar1.Position:=AWorkCount; 
    Application.ProcessMessages;//这一句很重要,放置界面假死。
  end;
end;

猜你喜欢

转载自blog.csdn.net/winniezhang/article/details/87855132