ftp 上传下载封装

FTPUtil 工具的封装,此方法用于封装上传时多目录文件,单目录的可在注释部分寻找

package com.thinkgem.jeesite.common.utils;

import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.net.SocketException;
import java.net.URLDecoder;
import java.util.List;
import java.util.StringTokenizer;

import static com.thinkgem.jeesite.common.config.Global.getConfig;

/**
 * 与ftp服务进行连接
 */
public class FTPUtil {




    private static final Logger logger = LoggerFactory.getLogger(FTPUtil.class);

    private static FTPClient ftpClient = null;

    private final static String ftphostaddr = getConfig("ftphostaddr");//服务器地址
    private final static String ftppath = getConfig("ftppath");//操作的服务器目录
    private final static String ftpname = getConfig("ftpname");//服务器登录名
    private final static String ftppwd = getConfig("ftppwd");//登录密码
    private final static String ftpport = getConfig("ftpport");//登录端口

    private final static String localpath = getCurentContentPath();
    private final static String fileSeparator = getConfig("ftp.upload");
    private final static String upfile = getConfig("ftppath");





    public void downfile(String filename){
        this.loginFtp();
        downFile(filename);

    }


    /**
     * 从文件服务器上下载文件到本地
     * @param filename
     */
    public static void downFile(String filename) {
        try{
            String flieName = filename.substring(filename.lastIndexOf("/") + 1);
            logger.info("所要下载的文件名称fileName={}",flieName);
            //4.指定要下载的目录
            ftpClient.changeWorkingDirectory(StringUtils.remove(filename,flieName));// 转移到FTP服务器目录
            //5.遍历下载的目录
            ftpClient.enterLocalPassiveMode();
            FTPFile[] fs = ftpClient.listFiles();
            for (FTPFile ff : fs) {
                //解决中文乱码问题,两次解码
                byte[] bytes=ff.getName().getBytes("iso-8859-1");
                String fn=new String(bytes,"utf8");
                if (fn.equals(flieName)|| ff.getName().equals(flieName)) {
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一种跨平台的C++开发框架,提供了丰富的功能和类库,使得FTP上传下载变得简单易用。 首先需要在Qt中引入相关的网络模块,包括QTcpSocket和QFtp。QTcpSocket用于与FTP服务器建立连接和数据传输,而QFtp封装FTP协议的一些常见操作,如连接、登录、上传、下载等。 要上传文件到FTP服务器,首先需要创建一个QTcpSocket对象,并与服务器建立连接。然后,使用QFtp对象的connectToHost()函数连接到FTP服务器,并使用login()函数进行登录验证。如果登录成功,就可以使用put()函数上传指定的文件。 要从FTP服务器下载文件,同样需要先创建一个QTcpSocket对象,并与服务器建立连接。然后,使用QFtp对象的connectToHost()函数连接到FTP服务器,并使用login()函数进行登录验证。如果登录成功,就可以使用get()函数下载指定的文件。 FTP上传和下载过程中,可以使用QFtp对象的各种信号和槽函数来处理事件,如上传和下载进度、错误处理等。 在Qt中进行FTP上传下载操作相对简单,只需几行代码即可完成。同时,Qt的网络模块提供了良好的跨平台支持,可以在多个操作系统上运行,使得开发和部署更加方便。 总之,使用Qt进行FTP上传下载操作非常简单,只需借助QTcpSocket和QFtp等相关类库,即可完成连接、登录、上传和下载等操作。通过Qt的信号和槽机制,还可以方便地处理事件和错误。对于需要实现FTP功能的应用程序而言,Qt是一个强大且便捷的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值