当前位置: 首页 > news >正文

java ftp上传方法

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

提供一个思路,大家可以参考着修改自己的方法!   

/**
     * 上传文件到FTP
     *
     * @param file
     *            file文件,struts2从页面得到的File类型
     *
     * @param filePath
     *            要保存在FTP上的路径(文件夹)
     * @param fileName
     *         
     *
     * @return 文件是否上传成功
     *
     * @throws Exception
     */

    public static boolean upload(File file, String filePath, String fileName) {

        TelnetOutputStream to = null;

        FileInputStream fi = null;

        filePath = FILE_SEPARATOR (定义的路径获取)+ filePath;

        try {
            if (file != null) {

                connectFTP();
                // ftpClient.setAsciiType();

                if (!isDirExist(filePath.replace("\\", "/"))) {

                    createDir(filePath.replace("\\", "/"));

                    ftpClient.changeDirectory("/" + filePath.replace("\\", "/"));

                }

                fi = new FileInputStream(file);

                to = (TelnetOutputStream) ftpClient.putFileStream(fileName, true);

                byte[] bytes = new

                byte[1024];

                int i = fi.read(bytes);

                while (i != -1) {

                    to.write(bytes);

                    i = fi.read(bytes);
                }
            }

            return true;

        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
            return false;

        } catch (IOException e2) {
            e2.printStackTrace();
            return false;

        } catch (Exception e) {
            e.printStackTrace();
            return false;

        } finally {

            if (fi != null) {

                try {
                    fi.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

            if (to != null) {

                try {
                    to.flush();

                    to.close();

                } catch (IOException e) {
                    e.printStackTrace();
                }

            }

            closeFTP();

        }

    }

 

    /**
     * 链接FTP
     *
     * @throws FtpProtocolException
     */

    public static void connectFTP() throws

    FtpProtocolException {

        try

        {

            ftpClient = FtpClient.create();

            ftpClient.connect(new InetSocketAddress(url, port));

            ftpClient.login(user, password.toCharArray());

            ftpClient.setBinaryType();

        } catch

        (IOException e) {

            e.printStackTrace();

        }

    }

转载于:https://my.oschina.net/maojindaoGG/blog/1613257

相关文章:

  • SQLServer 复制中移除和添加发布而不初始化所有项目
  • gitignore的配置
  • CXF WebService中传递复杂对象(List、Map、Array)
  • 常规活动页面制作
  • Oracle、PostgreSQL的对象命名规则
  • Spring Cloud教程 (一)云原生应用程序
  • Eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
  • 使用WinDbg获取SSDT函数表对应的索引再计算得出地址
  • 二次排序
  • 简述 Spring Cloud 是什么
  • OSS Web直传 (文件图片)
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 浅谈RxJava
  • android studio 3.0 Ndk 开发- 利用增量更新进行 apk的覆盖安装
  • Teamviewer原理和阻止方法
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 03Go 类型总结
  • 07.Android之多媒体问题
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Babel配置的不完全指南
  • exports和module.exports
  • Netty 4.1 源代码学习:线程模型
  • Node + FFmpeg 实现Canvas动画导出视频
  • PAT A1017 优先队列
  • SpiderData 2019年2月25日 DApp数据排行榜
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 闭包--闭包之tab栏切换(四)
  • 创建一个Struts2项目maven 方式
  • 回顾2016
  • ------- 计算机网络基础
  • 你真的知道 == 和 equals 的区别吗?
  • 前端技术周刊 2019-01-14:客户端存储
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​批处理文件中的errorlevel用法
  • ​如何防止网络攻击?
  • #pragma data_seg 共享数据区(转)
  • $.ajax()
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (4.10~4.16)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (汇总)os模块以及shutil模块对文件的操作
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)基于IDEA的JAVA基础1
  • (转)setTimeout 和 setInterval 的区别
  • ***利用Ms05002溢出找“肉鸡
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core跨平台微服务学习资源
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET关于 跳过SSL中遇到的问题
  • .NET建议使用的大小写命名原则
  • .Net语言中的StringBuilder:入门到精通
  • /dev下添加设备节点的方法步骤(通过device_create)