本文是ftp上传文件的工具类,非原创

package com.myweather.tools;
import org.apache.commons.net.ftp.FTPClient;
import java.io.IOException;
import java.io.InputStream;
/**
 * 通过FTP上传文件
 *
 * @Author lvhaibao
 * @Date 2018/2/11 21:43
 */
public class FTPTools {

//用于打印日志
    //private static final Logger log = Logger.getLogger(FTPUtils.class);

//设置私有不能实例化
    private FTPTools() {

}

/**
     * 上传
     *
     * @param hostname ip或域名地址
     * @param port  端口
     * @param username 用户名
     * @param password 密码
     * @param workingPath 服务器的工作目
     * @param inputStream 要上传文件的输入流
     * @param saveName    设置上传之后的文件名
     * @return
     */
    public static boolean upload(String hostname, int port, String username, String password, String workingPath, InputStream inputStream, String saveName) {
        boolean flag = false;
        FTPClient ftpClient = new FTPClient();
        //1 测试连接
        if (connect(ftpClient, hostname, port, username, password)) {
            try {
                //2 检查工作目录是否存在
                if (ftpClient.changeWorkingDirectory(workingPath)) {
                    // 3 检查是否上传成功
                    ftpClient.enterLocalActiveMode();    //主动模式
                    //ftpClient.enterLocalPassiveMode(); 被动模式
                    if (storeFile(ftpClient, saveName, inputStream)) {
                        flag = true;
                        disconnect(ftpClient);
                    }
                }
            } catch (IOException e) {
                //log.error("工作目录不存在");
                e.printStackTrace();
                disconnect(ftpClient);
            }
        }
        return flag;
    }

/**
     * 断开连接
     *
     * @param ftpClient
     * @throws Exception
     */
    public static void disconnect(FTPClient ftpClient) {
        if (ftpClient.isConnected()) {
            try {
                ftpClient.disconnect();
                //log.error("已关闭连接");
            } catch (IOException e) {
                //log.error("没有关闭连接");
                e.printStackTrace();
            }
        }
    }

/**
     * 测试是否能连接
     *
     * @param ftpClient
     * @param hostname  ip或域名地址
     * @param port      端口
     * @param username  用户名
     * @param password  密码
     * @return 返回真则能连接
     */
    public static boolean connect(FTPClient ftpClient, String hostname, int port, String username, String password) {
        boolean flag = false;
        try {
            //ftp初始化的一些参数
            ftpClient.connect(hostname, port);
            ftpClient.enterLocalPassiveMode();
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
            ftpClient.setControlEncoding("UTF-8");
            if (ftpClient.login(username, password)) {
                //log.info("连接ftp成功");
                flag = true;
            } else {
                //log.error("连接ftp失败,可能用户名或密码错误");
                try {
                    disconnect(ftpClient);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            //log.error("连接失败,可能ip或端口错误");
            e.printStackTrace();
        }
        return flag;
    }

/**
     * 上传文件
     *
     * @param ftpClient
     * @param saveName        全路径。如/home/public/a.txt
     * @param fileInputStream 要上传的文件流
     * @return
     */
    public static boolean storeFile(FTPClient ftpClient, String saveName, InputStream fileInputStream) {
        boolean flag = false;
        try {
            if (ftpClient.storeFile(saveName, fileInputStream)) {
                flag = true;
                //log.error("上传成功");
                disconnect(ftpClient);
            }
        } catch (IOException e) {
            //log.error("上传失败");
            disconnect(ftpClient);
            e.printStackTrace();
        }
        return flag;
    }
}

安卓ftp客户端的使用相关推荐

  1. 安卓FTP客户端无法连接FTP服务器FineFTP

    FineFTP的介绍请见上一篇博文<C++FTP服务器库:FineFTP的编译和使用>. 一.问题描述: 如题,在windows电脑中通过FineFTP搭建了一个FTP服务器,在安卓手机/ ...

  2. 在安卓手机上安装FTP客户端应用,实现通过手机访问计算机FTP服务器。

    为了实现手机与计算机之间的文件传输,我们应保证手机和计算机在同一局域网中,因此我们让计算机与手机连接到同一WIFI中,我们下载了猎豹WIIF,用电脑开启WIFI后,将手机接入WIFI,这样就保证了手机 ...

  3. android sftp软件,Turbo FTP client SFTP client 安卓FTP、SFTP客户端推荐

    圆滑,直观,强大的Andr​​oid FTP客户端与SFTP客户更快,更容易的服务器维护. 下载地址:https://play.google.com/store/apps/details?id=tur ...

  4. C语言安卓FTP服务器,FTP服务器客户端源代码C语言

    <FTP服务器客户端源代码C语言>由会员分享,可在线阅读,更多相关<FTP服务器客户端源代码C语言(12页珍藏版)>请在人人文库网上搜索. 1.FTP 服务器源代码: #inc ...

  5. 安卓端简易FTP客户端APP开发

    先上效果图: 本文的FTP客户端基于commons-net-3.3.jar库实现. 实现了ftp服务器登录. 单个文件的下载和上传,以及本地复制和删除文件. 一.登录服务器活动模块编写: 这块呢首先是 ...

  6. ftp客户端android版,Primitive FTPd(FTP客户端)

    Primitive FTPd开源并且没有广告,这款来自于fdroid商店当中的软件让用户能够用完全自定义的方式俩进行文件上面的传输,使用起来简单方便不用担心隐私和权限等多种方面的问题,是安卓上面进行F ...

  7. iOS FTP客户端的见解

    公司的一个项目功能,需要通过ftp实现一系列功能,主要功能有三个, 1,获取服务器上的某个路径下的内容: 2,将本地的图片上传至服务器: 3,将服务器上的文件下载到本地. 最开始做的时候,定的方向是, ...

  8. 网络编程--ftp客户端的实现(c#版)

    .net2.0对ftp有了一个很好的封装,但是确容易让人忽略ftp的真正内部实现,下面是我实现的ftp客户端的功能,其主要步骤是这样的: 1.创建一个FtpWebRequest对象,指向ftp服务器的 ...

  9. 安装ftp连接linux服务器配置,Linux下FTP安装及配置(VSFTPD服务器安装配置、FTP客户端安装配置)...

    安装说明 安装环境:CentOS-6.3 安装方式:yum安装.rpm源码安装 软件:ftp-0.17-51.1.el6.x86_64.rpm 下载地址:http://pan.baidu.com/s/ ...

最新文章

  1. Linux地址映射--线性映射与非线性映射
  2. 【自考】信息系统开发与管理(二)——章节详读
  3. OSPF LSA序列号问题
  4. call_user_func() expects parameter 1 to be a valid callback, cannot access private method
  5. 在Spring事务管理下,Synchronized为啥还线程不安全?
  6. PolarDB-X 2.0 全局 Binlog 和备份恢复能力解读
  7. java 命名内部类_如何把java SWT程序中的匿名内部类改写成命名内部类?
  8. Hadoop安装及配置
  9. java容器怎么封装的_docker怎么把容器打包成镜像
  10. HDU 5928 DP 凸包graham
  11. Ruby IDE及相关书籍
  12. 刷课在线支付系统(新手入门编写,大佬勿喷)
  13. VSCode中文字体那个最好看
  14. 腾讯统一播放器 API 文档2.0
  15. shiro自定义filter,anon不生效
  16. arduino人体红外报警实验
  17. 电脑重装系统如何在 Win11查看显卡型号信息
  18. uniapp 调用 android 原生sdk
  19. vue中鼠标悬停显示提示信息
  20. c++ 调用python错误总结

热门文章

  1. NSDictionary的使用及常用方法(如实始化、添加元素、删除元素、修改元素值等)
  2. eclipse和idea导出jar包
  3. python和pycharm安装包(附网盘地址)
  4. 【多道批处理系统】计算完成两个作业需要的最少时间,并图文叙述
  5. CentOS镜像说明(附下载地址)
  6. 客栈管理系统java源代码_源码客栈项目源码分类规则
  7. 服务器电源输出电压不稳定,开关电源输出电压不足的三大原因
  8. C#利用Chart工具绘制SinCos曲线
  9. Java中利用qqemai发送QQ邮件
  10. 最新版本火狐浏览器如何导入书签?