基于FTPClient的文件上传至Nginx服务器

一、Nginx做图片服务器

通常一个小型系统的图片,保存在应用服务器的项目目录下即可,但是对于一个中型规模的系统,就需要使用独立的图片服务器,单独分离图片的访问。目的是一方面缓解应用服务器的访问压力,另一方面,一旦服务器做了集群配置,那么图片资源的同步和共享就是问题。

 

1. 主要特点

1. 分担web服务器的访问压力,对于图片的访问压力转移到图片服务器中。

2. 图片服务器能够专门针对图片访问进行优化。【有专门的换存方案,提高响应速度。】

3. 提高扩展性,图片文件的量急剧增长【社交网站,门户网站,电商网站等。】

4. 解决集群架构中,图片文件数据不一致的问题。

2. Nginx安装

1. 安装gcc

yum -y install gcc gcc-c++

2. 安装openssl

yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

3. 安装Nginx

① 解压

tar zxvf nginx-x.x.x.tar.gz

② 执行configure文件

./configure

③ 编译

make

④ 编译安装

make install

4. 使用

a) 启动

执行 /usr/local/nginx/sbin/nginx 命令,默认端口号是80

./nginx -c /usr/work/nginx/conf/nginx.conf

b) 停止

./nginx -s stop

c) 重新加载配置并生效

./nginx -s reload

 

5. 配置Nginx服务器中默认的服务器位置:

修改nginx.conf配置文件。

135200_cgGh_185811.png

3. 安装FTP服务

1. 安装vsftpd服务

yum -y install vsftpd

2. 添加一个访问ftp的用户

useradd baizhi  --- 添加用户百知ftp

passwd baizhi   --- 修改密码

3. 防火墙放行21端口,ftp的默认访问端口

--添加开放端口

/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT   

/etc/init.d/iptables save   --保存配置

service iptables restart    --重启防火墙服务

4. 设置ftp访问

135219_9tnm_185811.png

 

1. 启动ftp

/etc/init.d/vsftpd start

2. 关闭ftp

/etc/init.d/vsftpd stop

3. 关闭匿名访问

编vsftp的配置文件:/etc/vsftpd/vsftpd.conf

135232_L5r8_185811.png

1. 使用主动模式,不要使用被动模式连接。

2. 设置FTP开机启动

chkconfig vsftpd on

4. 整合FTP和Nginx

1. 将Nginx的location目录,与FTP的用户关联起来

135353_BE0r_185811.png

1. 将ftp用户目录的读权限开放755权限

chmod -R 755 /home/baizhi  

测试通过Nginx服务器访问服务器端资源

135405_TQJC_185811.png

 

5. 使用Java代码的FTP功能上传文件

1. FTPClinet简介

a) 是apache提供的commons-net包中的一个API,作用是使用FTP协议远程操作服务器端文件资源。

2. FTPClient的资源maven坐标

140102_jxIs_185811.png

API介绍

//1. 准备本地文件输入流

FileInputStream in = new FileInputStream(new File("D:/text1.xls"));

//2. 创建FTP客户端工具对象。

FTPClient ftp = new FTPClient();

//3. ftp客户端连接远程FTP服务器,url代表FTP服务器的ip地址,port代表ftp端口号,默认是21。

ftp.connect("192.168.137.137", 21);

//4. 登陆FTP服务器,username和password分别是FTP服务器(CentOS系统)的用户名和密码。

ftp.login("baizhi", "admins");

//5. 获得当前客户端对于FTP服务器的状态吗

int replyCode = ftp.getReplyCode();

//6. 判断当前的状态吗是否可以使用FTP服务器。[官方文档上要求写上]

if (!FTPReply.isPositiveCompletion(replyCode)) {

ftp.disconnect();

System.out.println("FTP服务器不可用异常");

}

//7. 设置缓冲大小为1k

ftp.setBufferSize(1024);

//8. 设置文件类型为二进制文件

ftp.setFileType(FTP.BINARY_FILE_TYPE);

//9. 切换当前操作的目录

ftp.changeWorkingDirectory("www/baizhi/images/");

//10. 将in输入流中的文件保存在FTP服务器的切换后的目录中,并且文件名为filename。

ftp.storeFile("text.xls", in);//

//11. 关闭输入流

in.close();

//12. 退出登陆

ftp.logout();

//13. 断开ftp客户端连接。

if (ftp.isConnected()) {

ftp.disconnect();

}

 

 

 

2. 整合SpringMVC

a) 需要将SpringMVC接受文件的MultipartFile对象,转化成输入流。

multipartFile.getInputStream();然后使用ftp.storeFile(文件名,上传文件的输入流)即可完成上传。

 

转载于:https://my.oschina.net/u/185811/blog/1523462

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值