zoukankan      html  css  js  c++  java
  • 【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去限制文件的大小,但是浏览器不兼容,没能成功!

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

  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/hhx626/p/6010329.html
Copyright © 2011-2022 走看看