基于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
KANSYOUKYOU 2020-11-16
wushengyong 2020-10-28
腾讯soso团队 2020-11-06
Apsaravod 2020-11-05
PeterChangyb 2020-11-05
gyunwh 2020-11-02