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

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

  • 相关阅读:
    一个挺好用的自己写的小插件(用与把一般的图片转换成预制)——UNITY3D
    ios网络学习------4 UIWebView的加载本地数据的三种方式
    ios网络学习------6 json格式数据的请求处理
    OC 解决NSArray、NSDictionary直接打印中文出现乱码的问题
    网络数据的XML解析
    iOS对象序列化
    iOS数据存取和对象序列化
    iOS NSDictionary、NSData、JSON数据类型相互转换
    IOS四种保存数据的方式
    ios开发值json数据文件的存取
  • 原文地址:https://www.cnblogs.com/hhx626/p/6010329.html
Copyright © 2011-2022 走看看