1.添加依赖
        camel-ftp依赖与commons-net依赖两者取其中一个即可
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-ftp</artifactId>
            <version>2.13.2</version>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.6</version>
        </dependency>
2.辅助类
package com.zq.util;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

import java.io.*;
import java.net.SocketException;
/**
 * Created by java1 on 2018/1/23 0031.
 */

public class FtpUtil {

private final static Log logger = LogFactory.getLog(FtpUtil.class);

/**
     * 获取FTPClient对象
     *
     * @param ftpHost
     *            FTP主机服务器
     * @param ftpPassword
     *            FTP 登录密码
     * @param ftpUserName
     *            FTP登录用户名
     * @param ftpPort
     *            FTP端口 默认为21
     * @return
     */
    public static FTPClient getFTPClient(String ftpHost, String ftpUserName,
                                         String ftpPassword, int ftpPort) {
        FTPClient ftpClient = new FTPClient();
        try {
            ftpClient = new FTPClient();
            ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器
            ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
            if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
                logger.info("未连接到FTP,用户名或密码错误。");
                ftpClient.disconnect();
            } else {
                logger.info("FTP连接成功。");
            }
        } catch (SocketException e) {
            e.printStackTrace();
            logger.info("FTP的IP地址可能错误,请正确配置。");
        } catch (IOException e) {
            e.printStackTrace();
            logger.info("FTP的端口错误,请正确配置。");
        }
        return ftpClient;
    }

/*
     * 从FTP服务器下载文件
     *
     * @param ftpHost FTP IP地址
     *
     * @param ftpUserName FTP 用户名
     *
     * @param ftpPassword FTP用户名密码
     *
     * @param ftpPort FTP端口
     *
     * @param ftpPath FTP服务器中文件所在路径 格式: zq/ftp路劲    fdfd/aa
     *
     * @param localPath 下载到本地的位置 格式:H:/download
     *
     * @param fileName 文件名称
     */
    public static void downloadFtpFile(String ftpHost, String ftpUserName,
                                       String ftpPassword, int ftpPort, String ftpPath, String localPath,
                                       String fileName) {

FTPClient ftpClient = null;

try {
            ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
            ftpClient.setControlEncoding("UTF-8"); // 中文支持
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
            ftpClient.enterLocalPassiveMode();
            ftpClient.changeWorkingDirectory(ftpPath);

File localFile = new File(localPath + File.separatorChar + fileName);
            OutputStream os = new FileOutputStream(localFile);
            ftpClient.retrieveFile(fileName, os);
            os.close();
            ftpClient.logout();

} catch (FileNotFoundException e) {
            logger.error("没有找到" + ftpPath + "文件");
            e.printStackTrace();
        } catch (SocketException e) {
            logger.error("连接FTP失败.");
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
            logger.error("文件读取错误。");
            e.printStackTrace();
        }

}

}

3.测试(这一步测试其实是把文件从ftp上拉到(或复制到)本地自定义的文件夹下面)
package com.zq.down;

import com.zq.util.FtpUtil;

/**
 * Created by java1 on 2018/1/23 0023.
 */
public class FtpDownloadTestScriptTest {
    public static void main(String[] args) {
        String ftpHost = "10.1.1.123";
        String ftpUserName = "123";
        String ftpPassword = "123456";
        int ftpPort = 21;
        String ftpPath = "/";//ftp根目录
        String localPath = "E:\\TestTxt";
        String fileName = "c4.zip";
        FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);
    }

}

4. (1,2,3步骤是把文件拉到本地,如果说在界面想出现下载界面的话可以发送ajax请求。下面是我写的,仅供参考)
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: "/device/exportLog",
            data: { 'deviceSn': deviceSn } ,
            timeout: 10000,
            success: function ( data ) {
                if(data.status){
                    Messenger().post({
                        message: data.info,
                        type: 'success',
                        showCloseButton: true
                    }) ;
                    var FileName = deviceSn.toLowerCase()+".zip";
                    var url = window.location.protocol + "//" + window.location.host + "/device/deviceLogdownFromHttp?fileName="+FileName;
                    window.location.href = url;
                    }else{
                    Messenger().post({
                        message: data.info,
                        type: 'error',
                        showCloseButton: true
                    }) ;
                }
            }
        });

5.后台:
/**
     * 下载zip文件
     * */
    @RequestMapping("/deviceLogdownFromHttp")
    public void deviceLogdownFromHttp(HttpServletRequest request, HttpServletResponse response)throws Exception{
        String fileName = request.getParameter("fileName");
        try{
            String resultPath =PropertyUtil.getProperty("tasksave.filePath")+"/"+fileName;// "E://AllTxt//zqzipzipzipzipzip.rar";
            String zipName = resultPath.substring(0,resultPath.lastIndexOf(".")) + ".zip";
            File zipFile = new File(zipName);
            //读写zip文件
            InputStream fis = new BufferedInputStream(new FileInputStream(zipFile));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();

response.reset();
            String targetName = zipName.substring(zipName.lastIndexOf("/")+1);
            targetName = new String(targetName.getBytes("UTF-8"), "ISO-8859-1");
            response.setHeader("Content-Disposition", "attachment; filename=\"" + targetName + "\"");
            response.addHeader("Content-lenth", "" + buffer.length);
            response.setContentType("application/octet-stream;charset=UTF-8");

OutputStream os = new BufferedOutputStream(response.getOutputStream());
            os.write(buffer);
            os.flush();
            os.close();
            response.flushBuffer();
    String cc=fileName.substring(0,fileName.lastIndexOf(".")).toUpperCase();
            sysLogMapper.deleteDownloadLogTaskByDeviceSn(fileName.substring(0,fileName.lastIndexOf(".")).toUpperCase());
        }catch(Exception e){
            e.printStackTrace();
        }

}
6.(4,5步骤仅供参考,每个人写的不一样。)
      主要是:
                    var FileName = deviceSn.toLowerCase()+".zip";
                    var url = window.location.protocol + "//" + window.location.host + "/device/deviceLogdownFromHttp?fileName="+FileName;
                    window.location.href = url;(前台)
    (后台):deviceLogdownFromHttp这个方法

java使用ftp下载文件到本地(只是下载)相关推荐

  1. linux下载文件夹到本地命令行,linux下载文件到本地命令,linux下载文件到本地命令 下载工具...

    linux下载文件到本地命令,linux下载文件到本地命令 下载工具 来源:互联网/编辑:佚名/时间:2020-09-08 在手机上看 扫一扫进入手机端 linux用户命令在哪个文件夹下 用 whic ...

  2. 使用java对ftp进行文件的上传下载demo

    本文引用了https://www.cnblogs.com/lr393993507/p/5502266.html资源,并做了一些优化 这里有个写好的java项目demo,csdn好像擅自给我的资源加了很 ...

  3. python下载文件到本地-Python下载网络文本数据到本地内存的四种实现方法示例

    本文实例讲述了Python下载网络文本数据到本地内存的四种实现方法.分享给大家供大家参考,具体如下: import urllib.request import requests from io imp ...

  4. c++上传oss中文路径报错_C# 从Oss对象存储器上下载文件到本地打包下载代码

    [HttpGet][Route("downloadimgszip")]public void downloadimages(string goodsid){//获取所有图片路径Li ...

  5. java实现网上下载文件到本地

    思路: 要弄清网上下载文件的一些关键逻辑.我们要从网上获取信息,第一步必须要有网络连接(connection),接着是你要获取信息的路径(ResourceUrl),然后你要对获取到的信息的处理(pro ...

  6. [Work Summary] 远程FTP下载文件到本地目录

    美图欣赏2022/06/07 工作过程中,客户将input数据存放在FTP服务器的情况,通过查阅相关资料了解可从远程FTP下载文件到本地的功能需求,特此记录以下内容方便日后查阅与学习 问题:客户每周周 ...

  7. FTP通过DOS命令下载文件到本地

    FTP通过DOS命令下载文件到本地 在用FTP进行操作中的过程,发现网上没有,实际的操作步骤,自己就一边学习一边将学习过程进行记录,以后遇到和我一样问题的,可以进行参考一下,我以后也可以查阅自己的学习 ...

  8. java根据下载地址下载文件到本地

    根据一个下载地址现在到本地路径,直接上干货. fileUrl:需要下载的地址,fileLocal:本地路径(需要加上文件的后缀名) /** * TODO 下载文件到本地      * @author ...

  9. javaftp读取服务器文件,java读取ftp服务器文件

    java读取ftp服务器文件 内容精选 换一换 文件系统创建完成后,用户需在客户端挂载文件共享,在本地共享目录和CSG的文件共享建立映射,通过操作本地的目录实现对CSG共享目录的操作,实现数据实时上云 ...

  10. ftp读取服务器文件是否存在,java读取ftp服务器文件是否存在

    java读取ftp服务器文件是否存在 内容精选 换一换 弹性云服务器通过SNAT访问公网上服务器,出现TCP建链失败的情况,可通过以下方法进行排查.执行以下命令,查看远端服务器是否开启了"t ...

最新文章

  1. Web服务器 之 Apache 2.x 服务器中的URL重写的配置和应用
  2. Direct2D (23) : 复合几何对象之 ID2D1GeometryGroup
  3. python数据可视化地图_python--地图可视化
  4. 绝了,这18 个开箱即用的 Shell 脚本值得收藏
  5. 比特大陆新任CEO疑似曝光背后
  6. 资源大集中 浪潮I9000刀片为国家税务总局打造全能型平台
  7. NS2安装笔记 - Ubuntu9.10
  8. python项目管理器 宝塔面板 django 404_宝塔面板成功部署Django项目流程(图文)
  9. 【My Sft】彩色图像分析软件V1.0.1.0
  10. 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_43、SpringBoot2.x异步任务实战(核心知识)...
  11. Linux 下完整安装ffmpeg(包括各种解码器)
  12. 2016上海计算机考试PS玉佩题,玉佩效果,教案,ps,实例教程.doc
  13. php999换算人民币计算器,将cm换算为px (厘米换算为像素)
  14. 托业单词表Part2
  15. Win10台式电脑怎么不拔网线断网
  16. 第四周项目3--单链表应用之逆置
  17. 虎年第一条微信,拜年啦
  18. 基于java的中文分词工具ANSJ
  19. mysql爱吃鱼油_爱多美鱼油_鱼油_维生素_dha_epa_关节炎_高科技_鳕鱼_痛风_止血_改善记忆力_艾多美鱼油_医疗健康_保健品...
  20. sql 处理数据字段为空 如果为空转换成别的值

热门文章

  1. 各大高校研究生录取通知书争奇斗艳美到哭,我也想要!
  2. 2015美国计算机排名,2015USNews美国计算机科学研究生排名-Computer Science
  3. 哔哩哔哩弹幕处理+情感倾向分析
  4. php 裁剪图片代码,php裁剪图片代码示例
  5. babylonjs 分部加载模型_用基于WebGL的BabylonJS来共享你的3D扫描模型
  6. openlayer地图导出指定范围图片文件
  7. 基于SSM网上水果生鲜超市商城|电商购物系统
  8. 程序员要从“美团崩溃”中学习的痛点
  9. 信息技术课件认识计算机ppt课件ppt,小学信息技术课件-认识计算机课件PPT课件.ppt...
  10. 电工学复习【9】-- 触发器和时序逻辑电路