导语: 如果ftp server支持REST指令(可以通过ftp client登入,然后输入REST 100,然后检查服务端响应),则上传或下载失败后,下次连接成功后可以从断点开始继续传输数据;
下面是基于Delphi7的组件IdFTP的示例代码,比自己用指令实现方便。
断点上传:
procedure TFtpThread.Execute; var AFileStream: TFileStream; sFileName: string; begin sFileName := ExtractFileName(AFileName); AFileStream := TFileStream.Create(AFileName, fmOpenRead); try with frmMain.IdFTP2 do try if Connected then Disconnect; //重新连接 Username := 'zzzz'; Password := 'yyyyyy'; Host := 'xx.xx.xx.xx'; Port := 21; Passive := mypassive; Connect; except on e: Exception do begin frmMain.StatusBar1.Panels[0].Text := '出错,异常:' + E.Message; frmMain.WriteLog(E.Message); AFileStream.Free; exit; end; end; // 获取断点 finishedSize := frmMain.IdFTP2.Size(sFileName); AFileStream.Seek(finishedSize, soFromBeginning); // 开始断点续传 BytesToTransfer := AFileStream.Size; frmMain.ProgressBar1.Max := BytesToTransfer div 1024; AFileStream.Position := finishedSize; try {while (not Terminated) and (AFileStream.Position < AFileStream.Size) do begin frmMain.IdFTP2.Put(AFileStream, sFileName, true); end; AMemStream.Free; } frmMain.IdFTP2.Put(AFileStream, sFileName, true); except on e: Exception do begin frmMain.StatusBar1.Panels[0].Text := '出错,异常:' + E.Message; frmMain.WriteLog(E.Message); AFileStream.Free; exit; end; end; // 判断是否上传完毕 if AFileStream.Position = AFileStream.Size then frmMain.StatusBar1.Panels[0].Text := '上传完毕!' else frmMain.StatusBar1.Panels[0].Text := '未完成上传,点击上传继续传输!'; AFileStream.Free; except on e: Exception do begin frmMain.StatusBar1.Panels[0].Text := '出错,异常:' + E.Message; frmMain.WriteLog(E.Message); AFileStream.Free; exit; end; end; end;
断点下载:
procedure TfrmMain.FtpDownLoad(aURL, aFile: string); var tStream: TFileStream; sName, sPass, sHost, sPort, sDir,sFile: string; bResume: Boolean; begin //ftp方式下载 if FileExists(aFile) then //建立文件流 tStream := TFileStream.Create(aFile, fmOpenWrite) else tStream := TFileStream.Create(aFile, fmCreate); GetFTPParams(aURL, sName, sPass, sHost, sPort, sDir,sFile); with IdFTP1 do try if Connected then Disconnect; //重新连接 Username := sName; Password := sPass; Host := sHost; Port := StrToInt(sPort); Passive := mypassive; Connect; except on e: Exception do begin Application.MessageBox(PChar(E.Message), 'error', 16); WriteLog(E.Message); exit; end; end; IdFTP1.ChangeDir(sDir); //改变目录 BytesToTransfer := IdFTP1.Size(sFile); ProgressBar1.Max := BytesToTransfer div 1024; if FileExists(aFile) then bResume := true else bResume := false; try if bResume then //续传 begin //ProgressBar1.Position := tStream.Size div 1024; finishedSize := tStream.Size; tStream.Position := tStream.Size; IdFTP1.Get(sFile, tStream, True); end else begin IdFTP1.Get(sFile, tStream, False); end; if tStream.Position = BytesToTransfer then begin StatusBar1.Panels[0].Text := '下载完成'; end; finally tStream.Free; end; end; //ftp://user:pwd@foolish.6600.org:2003/soft/list.mp4 procedure TfrmMain.GetFTPParams(var aURL, sName, sPass, sHost, sPort, sDir,sFile: String); var URI: TIdURI; begin URI := TIdURI.Create(aURL); //建立 try sHost := URI.Host; //主机 sPort := URI.Port; sName := URI.Username; sPass := URI.Password; sDir := URI.Path; sFile := URI.Document; finally URI.Free; end; end;
相关推荐
在WPF中添加FTP断点续传功能,你需要以下步骤: 1. 初始化FTP客户端:使用选择的FTP库创建一个客户端对象,设置服务器地址、用户名和密码。 2. 检查文件是否存在:在上传之前,检查服务器上是否有同名文件,如果...
3.支持段点继传,也就是说文件可分N次传送. 4.分服务端和客户端,服务器支持多客户. 5.在传送过程中可实实对话,有聊天功能. 6.为了提高效率,本软件做得短小精悍,两文件总共只有100K,直截运行,不用安装. 7.麻雀虽小,但...
8.断点续传:FTP服务器可以实现断点续传,避免了文件传送失败的风险。 知识点:FTP服务器可以实现断点续传,避免了文件传送失败的风险。 9.权限控制:FTP服务器可以实现权限控制,限制用户的访问权限。 知识点:...
8. **断点续传**:某些FTP客户端和服务器支持断点续传功能,即使在传输中断后,也能从上次停止的地方继续,这对于大文件传输非常有用。 掌握以上FTP服务器软件的基本知识,可以帮助用户更有效地设置和管理FTP服务,...
9、断点继传秒传等,为您节约时间和海量存储空间 10、全面取代FTP,管理更轻松,可以免费部署体验 市场规模: 学校有服务器是我们的客户,没有服务器可以帮客户采购新服务器,育网云盘是一套精准校园文件管理系统,...
10、断点继传秒传等,为您节约时间和海量存储空间 11、全面取代FTP,管理更轻松,可以免费部署体验 市场规模: 学校有服务器是我们的客户,没有服务器可以帮客户采购新服务器,育网 云盘是一套精准校园文件管理系统...
这可能包括断点续传、进度显示、错误恢复等功能。为了提高效率,开发者可能采用了多线程或异步I/O技术来并行处理文件传输,同时还要考虑安全问题,如数据加密以保护用户隐私。 总的来说,V6Chat的源代码涵盖了IPv6...
邮件中提供了两种FTP下载方式,一种是整理好的文件目录,支持断点续传,另一种是打包文件。 在处理和分析ASTER G-Dem数据时,用户需要注意数据的网格结构和像素大小,以便正确地进行地理配准和插值操作。与其他DEM...
2:FTP下载支持多个站点同时下载一个文件(同时支持断点续传). 3:可以在不下载ZIP.RAR.ISO文件的情况下查看文件里面的目录文件. 4:支持多语言. 5:操作综合其它软件. 6:自定义快捷键. 7:在IE工具栏上加按钮,可以直接...