基于Ftp/Sftp协议的文件服务器数据传输
在项目中将应用服务器和文件服务器分开,能够增加项目的可维护性。本例分别使用FTP协议和SFTP协议在Windows Server 2008和Linux系统实现对文件的上传、下载和删除操作。
服务接口如下:
public interface FileManageDao { /** * 上传文件 * @param inputStream:文件输入流 * @param fileName:上传文件名称 */ public void upload(InputStream inputStream,String directory,String fileName) ; /** * 下载文件 * @param outputStream:文件输出流 * @param fileName:下载文件名称 */ public void download(OutputStream outputStream,String directory,String fileName) ; /** * 获取文件的输入流 * @param directory * @param fileName * @return */ public InputStream getAttachmentFile(String directory,String fileName); /** * 根据文档全名删除文件 * @param fileName */ public void delete(String directory,String fileName) ; /** * 判断文件是否存在 * @param directory * @param fileName * @return */ public boolean isExist(String directory,String fileName) ; }
服务接口模板类:
public abstract class FileManageDaoTemplate implements FileManageDao { //主机ip public String host="" ; //端口号,默认为22 public int port = 22 ; //服务器用户名,默认为root public String userName="root" ; //服务器密码 public String password ; //服务器上传地址 public String targetBaseLocation = "chrhc" ; //服务器连接超时时间(ms),默认60000 public int timeout = 60000; public void setTargetBaseLocation(String targetBaseLocation) { if(!StringUtils.hasLength(targetBaseLocation)){ return ; } targetBaseLocation = StringUtils.trimLeadingCharacter(targetBaseLocation, '/') ; targetBaseLocation = StringUtils.trimTrailingCharacter(targetBaseLocation, '/') ; this.targetBaseLocation = targetBaseLocation ; } ....set and get method..... }
下面在不同的系统分别采用不同的方式实现:
1.Windows 2008 Server下FTP协议
在Windows下选择使用FTP协议的原因是FTP是Windows自带的服务,只需要通过配置开启FTP服务即可,不需要第三方的安装包。Windows 2008下FTP配置见附件。
使用第三方免费安装包freeftpd也可以实现Windows系统下的FTP、SSH和SFTP服务,但是需要在软件界面中做相应的配置。
JAR包:使用Apache的FTP开源组件commons-net,添加如下Maven依赖:
<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.3</version> </dependency>
文件上传模板类实现:
相关推荐
yangkang 2020-11-09
lbyd0 2020-11-17
sushuanglei 2020-11-12
85477104 2020-11-17
KANSYOUKYOU 2020-11-16
wushengyong 2020-10-28
lizhengjava 2020-11-13
星月情缘 2020-11-13
huangxiaoyun00 2020-11-13
luyong0 2020-11-08
腾讯soso团队 2020-11-06
Apsaravod 2020-11-05
PeterChangyb 2020-11-05
gaobudong 2020-11-04
wwwjun 2020-11-02
gyunwh 2020-11-02
EchoYY 2020-10-31
dingyahui 2020-10-30