`

从本地上传文件到FTP

 
阅读更多
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.testng.annotations.Test;

/**
 * 〈一句话功能简述〉<br>
 * 〈功能详细描述〉
 * 
 * @see [相关类/方法](可选)
 * @since [产品/模块版本] (可选)
 */
public class TestFtpClient {

    /**
     * 
     * 上传文件到FTP <br>
     * 〈功能详细描述〉
      * 
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    @Test
    public void testUploadFileToFtp() throws Exception {
        // 获取本地文件对应的输入流
        InputStream inputStream = new FileInputStream(new File(
                "D:/software/数据库学习资料/03-业务培训(第三阶段)/业务练习/满意度统计报表/相关脚本.sql"));

        // 连接到Ftp
        FTPClient ftpClient = FtpClientUtils.connectFtp("10.87.14.51", 21, "test", "test");
        // 上传文件到FTP
        FtpClientUtils.uploadFileByInputStream("luxiaofeng/b", new String("相关脚本.sql".getBytes("GBK"), "ISO-8859-1"),
                inputStream, ftpClient);

        // 关闭连接
        ftpClient.disconnect();
        // 关闭输入流
        inputStream.close();

    }
}




import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

import com.suning.ids.client.util.StringUtils;

/**
 * FTP操作的工具类<br>
 * 〈功能详细描述〉
 * 
 * @see [相关类/方法](可选)
 * @since [产品/模块版本] (可选)
 */
public class FtpClientUtils {

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     * 
     * @param directory
     * @param ftpClient
     * @return
     * @throws IOException
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static boolean createDirecroty(String directory, FTPClient ftpClient) throws Exception {
        // 首先判断目录是否存在
        if (ftpClient.changeWorkingDirectory(directory)) {
            return true;
        }

        String[] dirs = directory.split("/");
        for (String dir : dirs) {
            if (StringUtils.isNotEmpty(dir)) {
                // 如果目录不存在,则创建该目录
                if (!ftpClient.changeWorkingDirectory(dir)) {
                    if (ftpClient.makeDirectory(dir)) {
                        ftpClient.changeWorkingDirectory(dir);
                    } else {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    /**
     * 
     * 连接到FTP <br>
     * 〈功能详细描述〉
     * 
     * @param host
     * @param port
     * @param username
     * @param password
     * @throws Exception
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static FTPClient connectFtp(String host, int port, String username, String password) throws Exception {
        FTPClient ftpClient = new FTPClient();
        ftpClient.connect(host, port);
        ftpClient.login(username, password);

        // 每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据,防止端口没有开启出现阻塞
        ftpClient.enterLocalPassiveMode();
        // 设置文件传输为二进制传输,默认为ASCII,二进制传输不会对文件内容作任何处理
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        return ftpClient;
    }

    /**
     * 
     * 上传文件到FTP通过输入流的方式 <br>
     * 〈功能详细描述〉
     * 
     * @param ftpClient
     * @param savePath
     * @param fileName
     * @param inputStream
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static void uploadFileByInputStream(String savePath, String fileName, InputStream inputStream,
            FTPClient ftpClient) throws Exception {
        // 创建上传的目录,存在则切换到该目录,不存在则创建该目录
        if (createDirecroty(savePath, ftpClient)) {
            ftpClient.storeFile(fileName, inputStream);
        }
    }

     /**
     * 
     * 从FTP下载文件到本地 <br>
     * 〈功能详细描述〉
     * 
     * @param remoteDir:远程文件目录
     * @param remteFileName:远程文件名
     * @param localFile:本地文件路径
     * @param ftpClient:FTPClient
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static void downloadFtpFile2Local(String remoteDir, String remteFileName, String localFile,
            FTPClient ftpClient) {
        FileOutputStream fos = null;
        // 首先判断远程文件目录是否存在
        try {
            if (ftpClient.changeWorkingDirectory(remoteDir)) {
                fos = new FileOutputStream(localFile);

                // 如果当前的文件类型(ftpClient.setFileType)是ASCII,行分隔符将转化为本地的格式
                ftpClient.retrieveFile(new String(remteFileName.getBytes("GBK"), "ISO-8859-1"), fos);
            }
        } catch (Exception e) {
            //日志
        } finally {
            // 关闭FTP连接
            if (ftpClient != null) {
                try {
                    ftpClient.disconnect();
                } catch (IOException e) {
                    //日志
                }
            }

            // 关闭输出流
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    //日志
                }
            }
        }

    }

}
分享到:
评论

相关推荐

    本地文件上传ftp

    将本地文件夹(文件夹包含子文件夹以及文件)上传至服务器中

    上传本地文件夹的文件到FTP服务器指定目录

    4. C# FTP上传代码示例:以下是一个简单的C# FTP文件上传示例,展示了如何连接服务器、设置目录并上传文件: ```csharp using System; using System.IO; using System.Net; public class FtpUploader { public ...

    Labview FTP上传文件

    FTP是一种标准网络协议,用于在Internet上从一个服务器传输文件到另一个服务器,或者从本地计算机到远程服务器。在Labview中,我们可以创建VI(Virtual Instruments)来实现这一功能,这为自动化测试、数据采集和...

    java上传文件到ftp.txt

    ### Java上传文件到FTP知识点详解 #### 一、概述 在现代软件开发中,文件传输是一项常见的需求。其中,FTP(文件传输协议)是最常用的一种文件传输方式之一。本篇文章将详细阐述如何利用Java编程语言实现本地文件...

    用C#实现文件上传到FTP,从ftp下载,读取文件

    - 虽然C#本身不直接支持从FTP服务器读取文件内容,但可以结合上述下载步骤,先将文件下载到本地,然后读取本地文件内容。 例如,以下是一个简单的FTP文件上传示例: ```csharp using System; using System.IO; ...

    VC写的上传文件到FTP服务器的OCX控件,网页可调用

    在本案例中,"VC写的上传文件到FTP服务器的OCX控件"是一个利用VC++编写的ActiveX(OCX)控件,它的主要功能是在网页中实现文件的上传操作,这在Web应用中非常常见,尤其是需要用户提交文件的情况。 ActiveX控件是...

    PHP远程上传文件到FTP

    在PHP编程中,远程上传文件到FTP服务器是一项常见的任务,特别是在网站内容管理、文件分发或备份场景下。本文将详细讲解如何使用PHP实现这一功能,以及涉及的相关知识点。 首先,要实现远程上传,我们需要了解PHP的...

    springboot以FTP方式上传文件到远程服务器

    "Spring Boot 使用 FTP 方式上传文件到远程服务器" 在本文中,我们将详细介绍如何使用 Spring Boot 框架来实现 FTP 方式上传文件到远程服务器。FTP(File Transfer Protocol)是一种常用的文件传输协议,广泛应用于...

    自动或手动将本地文件上传到FTP服务器

    3、自动上传时需要配置上传文件所在本地的文件夹,也通过XML进行配置 4、本例中自动上传时文件名要包含当前时间yy_MM_dd(17_06_02)格式的字符串 5、本例自动上传时间为凌晨1点 6、本例的主要使用目的是:数据库自动...

    springmvc上传文件到FTP

    通过以上步骤,我们就实现了Spring MVC应用中上传文件到FTP服务器的功能。用户可以通过Web界面选择文件并提交,后台服务则会将文件安全地传输到FTP服务器。这个功能在许多场景下都非常实用,比如文件共享、备份或...

    c# 实现文件FTP上传服务器

    c# 实现文件FTP上传至服务器  WebClient上传文件至服务器(不带进度条)    要上传的文件(全路径格式)  &lt;param name="strUrlDirPath"&gt;Web服务器文件夹路径  &lt;returns&gt;True/False是否上传成功&lt;/returns&gt;

    C#上传指定单个文件到FTP

    首先,我们需要创建一个FtpWebRequest对象,设置其请求方法为"STOR",这是FTP上传文件的命令。同时,我们需要指定FTP服务器的URL、用户名和密码,如下所示: ```csharp var request = (FtpWebRequest)WebRequest....

    上传文件到ftp,从ftp下载文件到本地

    支持所有文件的上传/下载*上传/下载文件的大小限制参照相关配置文件

    上传文件到ftp服务器

    2. `上传文件`:此函数接收本地文件路径和远程服务器上的目标文件名,然后将本地文件上传至FTP服务器。 3. `上传文件夹`:此函数用于递归上传整个文件夹,可能会有额外的选项来控制是否覆盖已存在的文件。 4. `暂停...

    使用wininet上传文件到ftp服务器

    在标题"使用wininet上传文件到ftp服务器"中,我们关注的核心就是如何利用`wininet`库进行FTP文件上传操作。 首先,我们需要理解FTP的基本工作流程。FTP客户端与服务器建立连接后,通过一系列的控制通道命令(如USER...

    Java实现FTP文件上传和下载

    5. **文件上传**:使用`storeFile()`方法上传文件。你需要提供远程文件路径和一个InputStream,这个InputStream通常来自本地文件。 ```java File localFile = new File("C:\\local\\file.txt"); InputStream in = ...

    ftp批量上传文件bat

    实现FTP批量上传文件到指定目录功能的bat脚本: @echo off @echo delete iplist.txt @del iplist.txt @setlocal EnableDelayedExpansion @echo create upload iplist.... @for /L %%i in (51,1,52) do ( @echo ...

    java实现文件上传到ftp

    7. **上传文件**:`ftp.storeFile(remoteFilePath, fis);` 这里`remoteFilePath`是服务器上文件的目标路径。 8. **关闭连接**:操作完成后,记得关闭连接和流:`ftp.disconnect();` 和 `fis.close();` 在`...

    上传文件到ftp(C#).txt

    - `Method`属性设置为`WebRequestMethods.Ftp.UploadFile`表示执行上传文件操作。 - **步骤3:打开文件流并读取文件内容** - 使用`FileStream`类打开待上传的文件,并读取其内容到缓冲区数组中。 - **步骤4:将...

    FTP上传下载,本地同步服务器文件

    FTP上传是指将本地计算机上的文件或文件夹传输到远程FTP服务器的过程。这通常在开发网站、部署应用或者共享文件时非常有用。在FTP客户端程序中,用户需要输入服务器的地址(FTP服务器主机名或IP地址)、用户名和密码...

Global site tag (gtag.js) - Google Analytics