使用vsftpd+Nginx实现文件上传与下载

什么是vsftpd

vsftpd( very secure FTP daemon),从名称就体现了其具有极大的安全性。vsftpd 是一个运行在UNIX 类操作系统上的完全免费的、开放源代码的ftp服务器,小巧轻快、安全易用。

它具有很多其他的 FTP 服务器所不支持的特征,如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

为什么使用vsftpd+Nginx文件上传与下载

上传的文件保存在应用服务器下时,这对于单体应用非集群状态下是适宜的。而一旦出现非单体应用或应用集群时,就会出现文件丢失或文件找不到等问题,这就有点尴尬了。因此,搭建一个文件上传服务器是很有必要的,vsftpd可以满足你这个要求。
至于nginx,客户端浏览器发送的是http请求获取数据,而vsftpd是基于ftp协议的,这时浏览器就访问不到数据啦,不过nginx的反向代理可以解决这个问题。

下面就说说如何使用vsftpd+nginx实现文件上传和下载

安装vsftpd

安装应用:yum -y install vsftpd
添加用户:useradd XXX
修改密码:passwd XXX —输入密码
开启21端口或关闭防火墙: vim /etc/sysconfig/iptables service iptables restart
修改selinux:getsebool -a | grep ftp
若allow_ftpd_full_access、ftp_home_dir为off,则
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
关闭匿名访问:vim /etc/vsftpd/vsftpd.conf ,将anonymous_enabled改为NO
开启被动模式:vim /etc/vsftpd/vsftpd.conf 添加
pasv_min_port=30000
pasv_max_port=30999
开启端口30000-30999
启动服务:service vsftpd restart
设置开机自启动:chkconfig vsftpd on

上传文件

获取上传文件输入流与以往文件上传一样,文件保存到vsftpd如下:
引入依赖:


	commons-net
	commons-net
	3.3

代码:

FTPClient ftp = new FTPClient(); 
ftp.connect("ip地址", 21); //ip地址和端口
ftp.login("用户名", "密码");//用户登录
ftp.setFileType(FTPClient.BINARY_FILE_TYPE); //设置文件类型 
InputStream is = new FileInputStream("文件全路径");//上传文件输入流
ftp.storeFile("abc.jpg", is);//第一个参数:保存文件名
ftp.logout();//退出登录

安装nginx

获取文件效果展示

你可能感兴趣的:(使用vsftpd+Nginx实现文件上传与下载)