【Nginx 3】FTP远程文件下载
2016-06-13 21:42
417 查看
导读:在做项目的过程中,当用户发起申诉时,要上传一个申诉材料。然后后台运营人员在处理申诉时,可能会需要下载申诉材料,进行参考。本篇博客呢,就介绍一下文件的下载!
String path=getPara("path");
FTPClient ftpClient = new FTPClient();
FileOutputStream fos = null;
try {
ftpClient.connect("服务器地址名称");
ftpClient.login("服务器用户名", "登录密码");
String remoteFileName = path;
FileSystemView fsv = FileSystemView.getFileSystemView();
//截取文件名
String fileName = path.substring(path.lastIndexOf("/")+1);
//读取桌面路径
fos = new FileOutputStream(fsv.getHomeDirectory()+"/"+fileName);
//System.out.println(fsv.getHomeDirectory()+"/"+fileName);
ftpClient.setBufferSize(1024);
//设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.retrieveFile(remoteFileName, fos);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
} finally {
IOUtils.closeQuietly(fos);
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
flag=true;
renderJson(flag);
}</span>
注意:在这个方法中,用到了一个IOUtils工具类,这个在网上下载就行。刚开始是自己写代码实现,后来发现已经有别人写好的了,就引入了一个jar包,轻松实现了远程文件的下载。
String deskPath=fsv.getHomeDirectory().toString()</span>
//限制文件大小:50M
FileChannel fc=null;
fc=input.getChannel();
System.out.println(fc.size());
if(fc.size()>52428800){//文件大小不符合,不进行上传
//jacksonJsonUntil.beanToJson(response, "false");
System.out.println("文件大小超出50M限制!");
}</span>
创新和模仿,是一个很难平衡和掌握的选择!
一、代码实现
<span style="font-family:KaiTi_GB2312;font-size:18px;">public void DownLoadAppealStuff() throws IOException{String path=getPara("path");
FTPClient ftpClient = new FTPClient();
FileOutputStream fos = null;
try {
ftpClient.connect("服务器地址名称");
ftpClient.login("服务器用户名", "登录密码");
String remoteFileName = path;
FileSystemView fsv = FileSystemView.getFileSystemView();
//截取文件名
String fileName = path.substring(path.lastIndexOf("/")+1);
//读取桌面路径
fos = new FileOutputStream(fsv.getHomeDirectory()+"/"+fileName);
//System.out.println(fsv.getHomeDirectory()+"/"+fileName);
ftpClient.setBufferSize(1024);
//设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.retrieveFile(remoteFileName, fos);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
} finally {
IOUtils.closeQuietly(fos);
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
flag=true;
renderJson(flag);
}</span>
注意:在这个方法中,用到了一个IOUtils工具类,这个在网上下载就行。刚开始是自己写代码实现,后来发现已经有别人写好的了,就引入了一个jar包,轻松实现了远程文件的下载。
二、其中的一些细节处理
2.1,获取文件的后缀
<span style="font-family:KaiTi_GB2312;font-size:18px;">String strStuffType=fileName.substring(fileName.lastIndexOf(".")+1);</span>2.2,获取桌面路径
<span style="font-family:KaiTi_GB2312;font-size:18px;">FileSystemView fsv = FileSystemView.getFileSystemView();String deskPath=fsv.getHomeDirectory().toString()</span>
2.3,判断文件大小
<span style="font-family:KaiTi_GB2312;font-size:18px;">FileInputStream input = new FileInputStream(imagefile);//限制文件大小:50M
FileChannel fc=null;
fc=input.getChannel();
System.out.println(fc.size());
if(fc.size()>52428800){//文件大小不符合,不进行上传
//jacksonJsonUntil.beanToJson(response, "false");
System.out.println("文件大小超出50M限制!");
}</span>
三、总结
以上就是最简单的基础文件下载实现,在实现的过程中,还有一些地方需要优化:比如批量上传、下载;断点续传、续载;自定义文件保存路径等。不过路是一步一步走的,先实现简单的功能,再去做优化!本来最开始是在前台使用JS去限制文件的大小,但是浏览器不兼容,没能成功!创新和模仿,是一个很难平衡和掌握的选择!
相关文章推荐
- 【Nginx 3】FTP远程文件下载
- nginx的安装与简单配置
- nginx的安装与简单配置
- nginx上部署python web
- 【Nginx学习】url地址补全最后的/(反斜杠)
- mac系统下nginx+php+mysql环境的搭建
- 架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置
- 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层
- 架构设计:负载均衡层设计方案(3)——Nginx进阶
- 架构设计:负载均衡层设计方案(2)——Nginx安装
- nginx服务器安装及配置文件详解
- ubuntu12.04简单安装Nginx
- nginx限制某个IP同一时间段的访问次数
- nginx+fastcgi+c++/php搭建web服务
- nginx笔记之fastcgi_param解释
- CentOS环境下使用GIT基于Nginx的私服搭建全过程
- CentOS环境下使用GIT基于Nginx的私服搭建全过程
- 直播推流之nginx服务器搭建
- 直播推流nginx-rtmp-module集成
- nginx 请求负载 转发规则设置