【Nginx 3】FTP远程文件下载

导读:在做项目的过程中,当用户发起申诉时,要上传一个申诉材料。然后后台运营人员在处理申诉时,可能会需要下载申诉材料,进行参考。本篇博客呢,就介绍一下文件的下载!

一、代码实现

 

 

<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去限制文件的大小,但是浏览器不兼容,没能成功!

创新和模仿,是一个很难平衡和掌握的选择!
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值