java实现上传文件到FTP

 更新时间:2022年06月23日 16:13:37   作者:江湖见  
这篇文章主要为大家详细介绍了java实现上传文件到FTP,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现上传文件到FTP的具体代码,供大家参考,具体内容如下

需求说明:将指定文件上传到FTP,上传成功后修改文件名。

获取文件名及路径(这里是从数据库获取,所以前面的代码就不CV了)

/**
     * 测试上传
     * @param map 从数据库获取到的文件信息 (包含文件路径FILE_PATH 文件类型FILE_TYPE等信息)
     */
     public void testUpdFtpFile(Map<String,Object> map){
         /*上传附件到FTP*/
         FileInputStream inputStream = null;
         try {
            //找到要上传的文件 
             String originfilename = "E:\\work\\files\\"+map.get("FILE_PATH").toString();
             //转成流
             inputStream = new FileInputStream(originfilename);
            //上传后的文件名+文件类型                        
            String ftpName = "上传到FTP后的文件名."+map.get("FILE_TYPE");
             boolean updFtpFile = FtpClientFile.uploadFile(ftpName,inputStream);
             if(updFtpFile){
                 //打印下日志
                 System.out.println(("=======文件已上传到FTP========"));
             }
         } catch (Exception e) {
             throw new BusinessException("附件上传失败!");
         }
     }

FtpClientFile工具类方法

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
 
import com.google.gson.JsonArray;
 
/**
 * ftp 上传文件
 * FTPClient commons.net 3.0.1版本
 * @author Lenovo
 *
 */
public class FtpClientFile {
    
    private static final String hostname = "10.xx.xx.xx" ;//FTP IP
    
    private static final int port = 21;//FTP 端口号
    
    private static final String username = "ftpName";//FTP 登录账号
   
    private static final String password = "ftpPsd"; //FTP 登录密码
    
    private static final String pathname = "/";//FTP 工作路径
    
    
    /**
     * 上传文件(可供Action/Controller层使用)
     * @param fileName 上传到FTP服务器后的文件名称
     * @param inputStream 输入文件流
     * @return
     */
     public static boolean uploadFile(String fileName,FileInputStream inputStream){
         
     boolean flag = false;
     FTPClient ftpClient = new FTPClient();
     //设置超时
     ftpClient.setConnectTimeout(60*60*1000);
     //设置编码
     ftpClient.setControlEncoding("UTF-8");
     try {
         //连接FTP服务器
         ftpClient.connect(hostname, port);
         //登录FTP服务器
         ftpClient.login(username, password);
         //是否成功登录FTP服务器    
         int replyCode = ftpClient.getReplyCode();
         if(!FTPReply.isPositiveCompletion(replyCode)){
             return flag;
             }
         System.out.println("===========登录FTP成功了==========");
         ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
         //切换路径 创建路径
         ftpClient.makeDirectory(pathname);
         ftpClient.changeWorkingDirectory(pathname);
         ftpClient.enterLocalPassiveMode();
         //设置缓冲
         ftpClient.setBufferSize(1024 * 1024 * 20);
         //保持连接
         ftpClient.setKeepAlive(true);
         boolean a = ftpClient.storeFile(new String(fileName.getBytes("utf-8"),"iso-8859-1"), inputStream);
         if(a){
             System.out.println("===========创建文件成功=============="+a);
                 String fileName2 = fileName+"AAA";
                 boolean status = ftpClient.rename(fileName, fileName2);
                 if(status)
                 System.out.println("===========修改文件名称成功=============="+status);
             }
         inputStream.close();
         ftpClient.logout();
         flag = true;
         } catch (Exception e) {
             e.printStackTrace();
         } finally{
             if(ftpClient.isConnected()){
                 try {
                     ftpClient.disconnect();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
         return flag;
         
     }
    
     
         
    /* public static void main(String[] args) {
         String originfilename = "C:\\Users\\Lenovo\\Desktop\\xx.txt";
         FileInputStream inputStream;
         try {
            inputStream = new FileInputStream(new File(originfilename));
            boolean a = uploadFile("xx.txt","/104/",inputStream);
            System.out.println("上传文件成功============"+a);
         } catch (FileNotFoundException e) {
            e.printStackTrace();
         }
    }*/
     
     
}

上传文件到FTP时 注意:是否有权限登录服务器/上传文件等操作。

默认在浏览器输入自己的ftp地址访问下看看 ftp://10.xx.xx.xx:端口号 登录看看

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java web将数据导出为pdf格式文件代码片段

    java web将数据导出为pdf格式文件代码片段

    这篇文章主要为大家详细介绍了java web将数据导出为pdf格式文件代码片段,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • LeetCode程序员面试题之无重复字符的最长子串

    LeetCode程序员面试题之无重复字符的最长子串

    Java计算无重复字符的最长子串是一种常见的字符串处理算法,它的目的是找出一个字符串中无重复字符的最长子串。该算法可以很好地解决一些字符串处理问题,比如寻找字符串中重复字符的位置,以及计算字符串中无重复字符的最长子串的长度。
    2023-02-02
  • Java实现分页查询功能

    Java实现分页查询功能

    这篇文章主要为大家详细介绍了Java实现分页查询功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • JDBC 程序的常见错误及调试方法

    JDBC 程序的常见错误及调试方法

    本文是《Java Web开发教程——入门与提高篇(JSP+Servlet)》一书《第9章 JDBC技术》的补充内容。
    2009-06-06
  • org.apache.zookeeper.KeeperException.BadVersionException异常的解决

    org.apache.zookeeper.KeeperException.BadVersionException异常的解

    在使用Apache ZooKeeper进行分布式协调时,你可能会遇到org.apache.zookeeper.KeeperException.BadVersionException异常,本文就来介绍一下解决方法,感兴趣的可以了解一下
    2024-03-03
  • SpringCloud2020整合Nacos-Bootstrap配置不生效的解决

    SpringCloud2020整合Nacos-Bootstrap配置不生效的解决

    这篇文章主要介绍了SpringCloud2020整合Nacos-Bootstrap配置不生效的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Java实现图片对比功能

    Java实现图片对比功能

    个人从来没有研究过图像学,也没看过什么论文或者相关文档,写这个完全是靠google和百度,自己写了个实验了下,测试用例也少,估计有大BUG的存在,所以看的人权当学习交流,切勿生产使用。
    2014-09-09
  • Spring @Async 的使用与实现的示例代码

    Spring @Async 的使用与实现的示例代码

    本篇文章主要介绍了Spring @Async 的使用与实现的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Java线程池队列LinkedTransferQueue示例详解

    Java线程池队列LinkedTransferQueue示例详解

    这篇文章主要为大家介绍了Java线程池队列LinkedTransferQueue示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • SpringMVC中Json数据交互处理示例详解

    SpringMVC中Json数据交互处理示例详解

    这篇文章主要介绍了SpringMVC中Json数据交互处理的相关资料,分别讲解了JSON的基本概念、构成要素、数据类型、对象和数组的表示方法、字符串的转义规则以及JSON与JavaScript的关系,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03

最新评论