【Nginx 3】FTP远程文件下载

版权声明:每天进步一点点——我也只是写着玩儿——随便转随便评 https://blog.csdn.net/u013034889/article/details/51660699

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

一、代码实现

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

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

展开阅读全文

没有更多推荐了,返回首页