文档章节

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

海绵宝宝100
 海绵宝宝100
发布于 2017/08/25 14:01
字数 964
阅读 33
收藏 0
点赞 0
评论 0

一、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配置文件。

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访问

 

1. 启动ftp

/etc/init.d/vsftpd start

2. 关闭ftp

/etc/init.d/vsftpd stop

3. 关闭匿名访问

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

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

2. 设置FTP开机启动

chkconfig vsftpd on

4. 整合FTP和Nginx

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

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

chmod -R 755 /home/baizhi  

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

 

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

1. FTPClinet简介

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

2. FTPClient的资源maven坐标

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(文件名,上传文件的输入流)即可完成上传。

 

© 著作权归作者所有

共有 人打赏支持
海绵宝宝100
粉丝 1
博文 13
码字总数 17972
作品 0
邯郸
项目经理
java实现FTP多线程断点续传,上传下载!

package com.ftp; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintW......

狼狼A狗 ⋅ 2011/03/22 ⋅ 3

图片上传Ftp服务器发生异常socket write error

java.net.SocketException: Software caused connection abort: socket write error 往ftp上用代码上传图片时报错、上传文件是不报错、用filezilla可以上传图片也能从pc端访问到 //创建一个F...

AlsaJasmine ⋅ 01/12 ⋅ 0

ftp下载文件

java通过ftp上传文件在通过ftp下载的时候找不到对应的文件是为什么? /** * Description: 向FTP服务器上传文件 * * @param url * FTP服务器hostname * @param port * FTP服务器端口 * @param...

2222211223 ⋅ 2017/08/25 ⋅ 0

org.apache.commons.net.ftp包开发FTP客户端,实现断点续传,中文支持

利用org.apache.commons.net.ftp包实现一个简单的ftp客户端实用类。主要实现一下功能 1.支持上传下载。支持断点续传 2.支持进度汇报 3.支持对于中文目录及中文文件创建的支持。 具体请看代码...

御风林海 ⋅ 2013/11/29 ⋅ 0

关于javaee上传ftp的某些问题

最近;项目需要上传归档文件到ftp服务器;我们的javaee项目服务器是IBM的uinx小型机;而FTP服务器是win8server版本的; jar包用的是apache的commons-net-3.3.jar; ftpClient.makeDirectory("路径...

老李99 ⋅ 2014/07/23 ⋅ 0

Java封装ftp工具类大全

下载文件流(获取到io流文件) package com.kl.print.util; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.i......

懿宁19931210 ⋅ 02/23 ⋅ 0

commons-net上传同一个文件到服务器只有一个能成功

场景是这样的,多个客户有可能同时上传一个大文件到服务器上,如果是这样的话,两个线程只有一个线程能上传,另一个线程就一直在RUNNABLE状态,但是会停在一个方法上,不会超时,用jstack看线...

曾杰 ⋅ 2012/03/29 ⋅ 2

android 客户端与ftp服务器文件上传

在开发android客户端程序时,有一个功能需要我上传本地的文件到ftp服务器,用了commons-net-3.0.1.jar new FTPClient() 发生了java.lang.NoClassDefFoundError错误,具体代码如下: FTPClien...

为谁流浪 ⋅ 2013/08/23 ⋅ 1

FTP断点续传卡死的问题。

用Apache Commons-Net包中的FtpClient做文件上传,从手机上传到服务器,手机使用WiFi连接,Server是Linux的vsftpd搭建的。 有以下特殊情况:上传文件到一半的时候,手动关掉WiFi致其上传失败...

摆渡者 ⋅ 2015/07/29 ⋅ 0

【FTP】java FTPClient 文件上传内容为空,文件大小为0

问题:如题所述,使用FTPClient上传至FTP服务器,   表现如下:①文件大小为0        ②上传很小的文件,但是要花费很长的时间,20K要花费2分钟甚至更久        ③没有任何的...

angel挤一挤 ⋅ 2017/06/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vim介绍、vim颜色显示和移动光标、vim一般模式下移动光标、一般模式下复制粘贴剪切

VIM Vim 是 UNIX 文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff),语法高亮,全面的帮助系统,本地脚本(Vimscript),和便于选择的...

蛋黄Yolks ⋅ 16分钟前 ⋅ 0

springboot+mockito测试controller层遇到的问题

使用MockitoJUnitRunner测试的一个例子,原来报错无法找到bean, 类似的异常如下:createBeanError..... 原因:是因为@Runwith使用了SpringRunner,应该修改为MockitoJUnitRunner 代码如下: ...

writeademo ⋅ 28分钟前 ⋅ 0

关于“幂等”操作

一个幂等(idempotent)操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 开发中, 我们经常考虑幂等操作的场景有“接口调用”、“MQ消费”、“自动任务”等 接口调用, 可能出现...

零二一七 ⋅ 36分钟前 ⋅ 0

Dubbo服务服务暴露之ProxyFactory Invoker

Dubbo服务暴露过程中有涉及到调用ProxyFactory 中方法获取Invoker对象的过程,现在我们来深究下源码,来看下这个过程是在做些什么,返回的Invoker 对象是什么,我们来看一下代码的切入点: ...

哲别0 ⋅ 50分钟前 ⋅ 0

GP两种连接方式性能测试

GP两种连接方式性能测试 Pivotal import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class GPQueryStrin......

仔仔1993 ⋅ 55分钟前 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 今天 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 今天 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 今天 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 今天 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部