最近出了一个问题就是在本地上传FTP没有一点问题 可是部署到服务器上。上传的时候总是false。解决办法

  1. ftp.enterLocalPassiveMode();
    boolean storeFile = ftp.storeFile(filename, input);
    开启FTP被动传输
  1. package com.my.blog.website.utils;
  2.  
  3. import org.apache.commons.lang.StringUtils;
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPReply;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
  4.  
  5. import java.io.*;
  6.  
  7. /**
    * JAVA FTPClient 工具类
    *
    * commons-net-1.4.1.jar PFTClinet jar包
    *
    * @author : hpp
    */
    public class FtpClientUtils{
  8.  
  9. private static final Logger log = LoggerFactory.getLogger(FtpClientUtils.class);
  10.  
  11. /**
    * Description: 向FTP服务器上传文件
    * @Version1.0
    * @param url FTP服务器hostname
    * @param port FTP服务器端口
    * @param username FTP登录账号
    * @param password FTP登录密码
    * @param path FTP服务器保存目录
    * @param filename 上传到FTP服务器上的文件名
    * @param input 输入流
    * @return 成功返回true,否则返回false
    */
    public static boolean uploadFile(
    String url,//FTP服务器hostname
    int port,//FTP服务器端口
    String username, // FTP登录账号
    String password, //FTP登录密码
    String path, //FTP服务器保存目录
    String filename, //上传到FTP服务器上的文件名
    InputStream input // 输入流
    ) {
    boolean success = false;
    FTPClient ftp = new FTPClient();
    try {
    log.info("FTP开始上传,文件名为:"+filename);
    int reply;
    ftp.connect(url, port);//连接FTP服务器
    //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
    boolean login = ftp.login(username, password);//登录
    if(!login)
    log.info("ftp!!!!login失败");
    reply = ftp.getReplyCode();
    ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
    if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
    log.info("FTP服务器 拒绝连接");
    return success;
    }
    boolean change = ftp.changeWorkingDirectory(path);
  12.  
  13. ftp.enterLocalPassiveMode();
    boolean storeFile = ftp.storeFile(filename, input);
    input.close();
    ftp.logout();
    if(storeFile)
    log.info("FTP开上传成功!文件名为:"+filename);
    success = true;
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (ftp.isConnected()) {
    try {
    ftp.disconnect();
    } catch (IOException ioe) {
    }
    }
    }
    return success;
    }
  14.  
  15. /**
    * 删除文件
    * @param fileName 要删除的文件地址
    * @return true/false
    * @throws IOException
    */
    public static boolean delete(String fileName, FTPClient ftpClient) throws IOException {
    return ftpClient.deleteFile(fileName);
    }
  16.  
  17. /**
    * 下载文件到指定目录
    * @param ftpFile 文件服务器上的文件地址
    * @param dstFile 输出文件的路径和名称
    * @throws Exception
    */
    public static void downLoad(String ftpFile, String dstFile, FTPClient ftpClient) throws Exception {
    if (StringUtils.isBlank(ftpFile)) {
    throw new RuntimeException("ftpFile为空");
    }
    if (StringUtils.isBlank(dstFile)) {
    throw new RuntimeException("dstFile为空");
    }
    File file = new File(dstFile);
    FileOutputStream fos = new FileOutputStream(file);
    ftpClient.retrieveFile(ftpFile, fos);
    fos.flush();
    fos.close();
    }
  18.  
  19. /**
    * 从文件服务器获取文件流
    * @param ftpFile 文件服务器上的文件地址
    * @return {@link InputStream}
    * @throws IOException
    */
    public static InputStream retrieveFileStream(String ftpFile, FTPClient ftpClient) throws IOException {
    if (StringUtils.isBlank(ftpFile)) {
    throw new RuntimeException("ftpFile为空");
    }
    return ftpClient.retrieveFileStream(ftpFile);
    }
  20.  
  21. public static void main(String[] args) {
    try {
    FileInputStream in=new FileInputStream(new File("E:\\qrcode.jpg"));
    boolean flag = uploadFile("139.199.116.44", 21, "zdz69824436", "j67fBybHFS", "/autoCar/", "qrcode.jpg", in);
    System.out.println(flag);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    }
    }

FTP上传心得的更多相关文章

  1. .net FTP上传文件

    FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...

  2. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  3. FTP上传文件到服务器

    一.初始化上传控件. 1.我们这里用dropzone.js作为上传控件,下载地址http://www.dropzonejs.com/ 2.这里我们使用一个div元素作为dropzone载体. < ...

  4. 再看ftp上传文件

    前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在 ...

  5. 【完整靠谱版】结合公司项目,仔细总结自己使用百度编辑器实现FTP上传的完整过程

    说在前面 工作中会遇到很多需要使用富文本编辑器的地方,比如我现在发布这篇文章离不开这个神器,而且现在网上编辑器太多了.记得之前,由于工作需要自己封装过一个编辑器的公共插件,是用ckeditor改版的, ...

  6. FTP上传文件提示550错误原因分析。

    今天测试FTP上传文件功能,同样的代码从自己的Demo移到正式的代码中,不能实现功能,并报 Stream rs = ftp.GetRequestStream()提示远程服务器返回错误: (550) 文 ...

  7. JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)

    package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...

  8. FTP上传-封装工具类

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  9. 记一次FTP上传文件总是超时的解决过程

    好久没写博,还是重拾记录一下吧. 背景:买了一个阿里云的云虚拟机用来搭建网站(起初不了解云虚拟主机和云服务器的区别,以为都是有SSH功能的,后来发现不是这样样子啊,云虚拟机就是FTP上传网页+MySQ ...

随机推荐

  1. DB2 公共表表达式(WITH语句的使用)

    ----start 说起WITH 语句,除了那些第一次听说WITH语句的人,大部分人都觉得它是用来做递归查询的.其实那只是它的一个用途而已,它的本名正如我们标题写的那样,叫做:公共表表达式(Commo ...

  2. Python基础-python简介(一)

    一.简介: python是一种面向对象的解释性计算机程序设计语言,由荷兰人Guido  von  Rossum于1989年的圣诞节发明. Python语言的特色: 1.python是一门解释性语言 解 ...

  3. MySQL 树节点递归遍历所以子节点

    DELIMITER $$ DROP FUNCTION IF EXISTS `getChildList`$$ CREATE FUNCTION `getChildList`(rootId INT) RET ...

  4. sbb指令

    sbb是带借位减法指令,它利用了CF位上记录的借位值. 指令格式:sbb 操作对象1,操作对象2 功能:操作对象1=操作对象1-操作对象2-CF 比如指令sbb ax,bx实现的功能是: (ax)=( ...

  5. 每10秒执行定时任务-crontab

    * * * * * /data/crontab.sh * * * * * sleep 10; /data/crontab.sh * * * * * sleep 20; /data/crontab.sh ...

  6. PHP开发——分支结构

    If if if···else··· if···else··· switch

  7. 31.Mysql复制

    31.Mysql复制复制是指将主数据库的DDL和DML操作通过二进制日志传到从数据库上,然后在从数据库上对重做日志,从而使从库与主库保持同步.Mysql支持一台主库同时向多台从库复制,从库也可以作为其 ...

  8. setsockopt设置socket状态

    setsockopt设置socket状态 1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsoc ...

  9. day0-功能自动化的前提

    自动化不是万能的,不是什么产品都适合自动化测试,那些产品适合自动化测试? 只要满足下面三个条件就可以进行自动化测试 一:软件需求变动不频繁 二:项目周期较长 自动化测试框架的设计.脚本的开发与调试需要 ...

  10. CQOI2018 简要题解

    破解D-H协议 列个式子会发现是BSGSBSGSBSGS的模板题,直接码就是了. 代码: #include<bits/stdc++.h> #include<tr1/unordered ...