精华内容
下载资源
问答
  • java上传ftp
    2021-06-30 16:26:48

    简介

    FTP是TCP/IP协议组中的协议之一,包括两个组成部分,一是FTP服务端,二是FTP客户端,其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。

    实例

    下面利用Java实现FTP上传图片到远程服务器实例:
    1、依赖jar包

    <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.4</version>
    </dependency>
    <dependency>
          <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
    </dependency>
    <dependency>
           <groupId>commons-net</groupId>
           <artifactId>commons-net</artifactId>
           <version>3.6</version>
    </dependency>
    

    2、FtpUtil用来封装上传文件的工具类

    public class FtpUtil {
        public static void UploadImageByInputStream(InputStream is,String imageName) throws IOException {
            //创建ftp客户端
            FTPClient ftpClient = new FTPClient();
            ftpClient.setControlEncoding("GBK");
            String hostname = "127.0.0.1";//服务器地址
            int port = 21;//ftp端口
            String username = "vftp";//ftp用户名
            String password = "****";//密码
    
            //连接ftp服务器
            ftpClient.connect(hostname, port);
            //登陆ftp
            ftpClient.login(username, password);
            int reply = ftpClient.getReplyCode();
            System.out.println(reply);
            //如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftpClient.disconnect();
                return;
            }
            //设置文件类型(二进制)
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            //设置被动模式
            ftpClient.enterLocalPassiveMode();
    
    //      ftpClient.makeDirectory("images");//在root目录下创建文件夹
    //        String remoteFileName = System.currentTimeMillis()+"_"+imageName;
    //        ftpClient.storeFile("/www/wwwroot/vftp/"+imageName, is);//文件你若是不指定就会上传到root目录下
            ftpClient.storeFile(imageName, is);//文件你若是不指定就会上传到root目录下
            is.close();
            ftpClient.logout();
            ftpClient.disconnect();
        }
    }
    

    3、控制器

    @RestController
    public class FileUploadController {
    
        @RequestMapping("/upload")
        public String upload(@RequestParam("file") MultipartFile file) {
            if (!file.isEmpty()){
                try {
                    InputStream inputStream = file.getInputStream();
                  	FtpUtil.UploadImageByInputStream(inputStream,file.getOriginalFilename());
                } catch (IOException e) {
                    e.printStackTrace();
                    return "fail";
                }
                return "success";
            }else {
                return "fail";
            }
        }
    }
    

    4、前端页面

    <body>
        <form action="/upload" method="post" enctype="multipart/form-data">
            选择文件:<input type="file" name="file"><br>
            <input type="submit" value="上传">
        </form>
    </body>
    
    更多相关内容
  • java上传ftp服务器工具类,提供完成的方法,直接调用即可
  • java实现的ftp文件上传

    2016-03-16 11:39:46
    java实现的ftp文件上传
  • java ftp 服务器

    2018-02-23 10:44:17
    一个简单的demo,适合初学者,java语言使用第三方API,进程FTP上传下载的demo
  • 主要为大家详细介绍了java实现ftp上传的相关资料,教大家如何创建文件夹?具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。接下来通过本文给大家实例讲解Java实现FTP文件的上传和下载功能,需要的的朋友一起看看吧
  • 主要介绍了Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,需要的朋友可以参考下
  • 主要介绍了Java中FTPClient上传中文目录、中文文件名乱码问题解决方法,本文使用apache-commons-net工具包时遇到这个问题,解决方法很简单,需要的朋友可以参考下
  • java上传文件到ftp.txt

    2019-06-05 16:08:25
    通过java程序来实现将本地文件上传ftp服务器的功能
  • Java项目实现文件上传FTP

    千次阅读 2021-07-21 15:08:45
    因为之前是前端页面通过Node直接上传FTP的,现在需要后台提供一个接口由后端接口上传FTP。 二、pom依赖及配置文件 项目是否是SpringBoot工程没有关系 <!-- ftp上传下载--> <dependency> <...

    一、介绍

    街道一个需求,需要提供一个接口,将资质文件(图片)上传到FTP上,
    因为之前是前端页面通过Node直接上传到FTP的,现在需要后台提供一个接口由后端接口上传到FTP。

    二、pom依赖及配置文件

    项目是否是SpringBoot工程没有关系

    <!--    ftp上传下载-->
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>3.7</version>
            </dependency>
    

    我们将FTP的IP地址、端口号、账号、密码配置在application.yml配置文件中,便于统一管理。
    在这里插入图片描述

    三、Controller控制层接收文件

    控制层的接口入参使用MultipartFile数组来接收文件(使用数组是为了接收多个文件):
    在这里插入图片描述
    此处需要注意,前端传的文件的name也需要为file

     @PostMapping("/upload")
        public ResponseData uploadFTP(@RequestParam(name = "file")  MultipartFile[] imgs){
            log.info("文件长度:"+imgs.length);
            ResponseData<Object> data = ResponseData.defaultSuccess();
            try {
                for (MultipartFile img : imgs) {
                    log.info("文件名:"+img.getOriginalFilename());
                }
                String[] url = uploadFTPService.uploadFTP(imgs);
                data.setData(url);
            }catch (Exception e){
                data = ResponseData.defaultFail();
                data.setMessage(e.getMessage());
    
            }
            return data;
        }
    

    四、Service业务层

    业务层首先

    1. 连接FTP

    2. 登陆FTP
      在这里插入图片描述

    3. 创建FTP目录

    4. 切换工作目录
      在这里插入图片描述

    5. 遍历数组,将文件以InputStream流的形式上到FTP,最后返回上传的FTP地址。
      在这里插入图片描述

    /**
     * @author :LiuShihao
     * @date :Created in 2021/7/19 4:00 下午
     * @desc :
     */
    @Slf4j
    @Service
    public class UploadFTPServiceImpl implements UploadFTPService {
    
        @Value("${ftp.drFtpPath}")
        public  String FTP_IP ;
        @Value("${ftp.drFtpPort}")
        public   Integer FTP_PORT ;
        @Value("${ftp.drFtpAccount}")
        public   String FTP_USERNAME ;
        @Value("${ftp.drFtpPassword}")
        public   String FTP_PASSWORD ;
        public String prefixPath  = "/common/crm/crmfile/";
    
    
    
        public static FTPClient ftp ;
    
        @Override
        public String[] uploadFTP(MultipartFile[] imgs) throws IOException {
            String[] imagesUrls = new String[imgs.length];
            ftp = new FTPClient();
            ftp.connect(FTP_IP, FTP_PORT);
            log.info("FTP_ip: "+FTP_IP+",port: "+FTP_PORT+",username: "+FTP_USERNAME+",password: "+FTP_PASSWORD);
            boolean login = ftp.login(FTP_USERNAME, FTP_PASSWORD);
            if (!login){
                throw new RuntimeException("FTP连接失败!");
            }else {
                log.info("FTP连接成功!");
            }
            //进入本地被动模式
            ftp.enterLocalPassiveMode();
            //将 设置文件传输模式为二进制,可以保证传输的内容不会被改变 调整到登录之后
            ftp.setFileType(FTP.BINARY_FILE_TYPE);
    
            LocalDateTime now = LocalDateTime.now();
            String yyyy = DateTimeFormatter.ofPattern("yyyy").format(now);
            String MM = DateTimeFormatter.ofPattern("MM").format(now);
            String dd = DateTimeFormatter.ofPattern("dd").format(now);
            String HH = DateTimeFormatter.ofPattern("HH").format(now);
    
            String path  = prefixPath +yyyy+"/"+MM+"/"+dd+"/"+HH+"/";
            log.info("FTP上传的路径:"+path);
            //创建目录
            boolean makeDirectory = ftp.makeDirectory(path);
            //切换FTP工作目录
            boolean b = ftp.changeWorkingDirectory(path);
            if (!b){
                throw new RuntimeException("FTP切换工作目录失败!");
            }else {
                log.info("FTP切换工作目录成功!");
            }
            int i = 0 ;
            for (MultipartFile img : imgs) {
                InputStream inputStream = img.getInputStream();
                //storeFile 上传FTP
                boolean b1 = ftp.storeFile(img.getOriginalFilename(), inputStream);
                if (!b1){
                    throw new RuntimeException("FTP上传失败!");
                }else {
                    log.info(img.getOriginalFilename()+"上传成功");
                }
                imagesUrls[i] = "http://116.228.55.176"+path+img.getOriginalFilename();
                i ++;
    
            }
            return imagesUrls;
    
        }
    }
    
    

    五、上传测试

    Postman上传测试:
    在这里插入图片描述
    服务器日志打印:
    在这里插入图片描述

    六、如果参数是Base64编码格式的文件

    如果参数不是MultipartFile类型的而是经过Base64编码格式的字符串
    在这里插入图片描述

    ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64.getDecoder().decode(fileBase64.getBytes(Charsets.UTF_8)));
    

    只需要将Base64编码的字符串通过Base64解码,通过ByteArrayInputStream构造一个输入流inputStream, 之后还是和之前的一样使用ftp.storeFile(img.getFileName(), inputStream); 将输入流上传即可。

    展开全文
  • JAVA操作FTP文件服务器上传与下载文件,包含远程动态创建文件夹、查看文件是否存在、删除文件、上传文件和下载文件等方法
  • Java实现FTP批量大文件上传下载.pdf
  • 主要介绍了Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
  • 本文主要分享了Java实现文件上传和下载的具体实例,分为单个文件的上传与下载和整个文件夹的上传与下载。具有很好的参考价值,需要的朋友一起来看下吧
  • 主要介绍了java使用ftp上传文件示例,需要的朋友可以参考下
  • java ftp上传失败怎么办?最近做一个项目需要将文件上传FTP指定目录,然后发现项目部署在tomcat就可以成功,部署在weblogic就失败,在网上找了很多原因一直没有解决。boolean isSuccee = ftp.storeFile(fileName, ...

    5a1a3b747d2c0e28af6001266acaa02e.png

    java ftp上传失败怎么办?

    最近做一个项目需要将文件上传至FTP指定目录,然后发现项目部署在tomcat就可以成功,部署在weblogic就失败,在网上找了很多原因一直没有解决。boolean isSuccee = ftp.storeFile(fileName, in);

    这里一直返回false上传失败

    然后看网上解决方案是添加ftp.enterLocalPassiveMode();仍然没有解决问题

    直接上代码:

    先链接ftp服务private static FTPClient ftp;

    /*

    * 获得ftp链接

    */

    public static boolean connectFtp(Ftp ftpInfo) throws Exception {

    ftp = new FTPClient();

    boolean flag = false;

    int reply;

    if(ftpInfo.getPort() != null && !"".equals(ftpInfo.getPort())){

    ftp.connect(ftpInfo.getIpAddr(),ftpInfo.getPort());

    }else{

    ftp.connect(ftpInfo.getIpAddr());

    }

    ftp.login(ftpInfo.getUserName(), ftpInfo.getPwd());

    ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

    reply = ftp.getReplyCode();

    if (!FTPReply.isPositiveCompletion(reply)) {

    ftp.disconnect();

    return flag;

    }

    ftp.changeWorkingDirectory(ftpInfo.getPath());

    flag = true;

    return flag;

    }

    然后是上传文件:/**

    * 文件上传

    * @param file

    * @throws IOException

    */

    public static void uploadFile(File file) throws IOException {

    FileInputStream in = null;

    try {

    in = new FileInputStream(file);

    String fileName = file.getName();

    /**

    * ftp.enterLocalPassiveMode();

    * 这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。

    * 为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,

    * 但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。

    */

    ftp.enterLocalPassiveMode();

    ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);

    boolean isSuccee = ftp.storeFile(fileName, in);

    int i = 1;

    String newFileName = null;

    while (!isSuccee) { //多次上传数据直到成功(最多12次)

    newFileName = i + fileName;

    isSuccee = ftp.storeFile(newFileName, in);

    i++;

    if(i>11){

    break;

    }

    }

    String ftpPath = ServiceConstans.ONEPORT_FTP_PATH;//驳船配载图上传到FTP的路径

    if (isSuccee ) { //成功

    logger.info("FTP:文件上传成功!");

    if( newFileName == null){

    ftp.rename(fileName, ftpPath+fileName); // 第一次上传就成功

    }else{

    ftp.rename(newFileName, ftpPath+fileName);

    }

    } else {

    logger.info("FTP:文件上传失败!!");

    throw new BusiException("FTP:文件上传失败!!");

    }

    } catch (FileNotFoundException e) {

    logger.error("未找到相关文件!", e);

    } catch (IOException e) {

    logger.error("上传文件失败!", e);

    } finally {

    in.close();

    //file.delete();//删除源文件

    }

    }

    解决方案:

    由于代码一直没有问题,从服务器方面检测;

    因为web logic上的jar包版本低于项目中的jar包,没有强行设置查找本项目jar包的话会优先加载weblogic中的jar包所以由于版本过低导致上传失败

    02a34621291ed2fb01b33689ddf6b6c4.png

    所以在weblogic.xml文件中添加上org.apache.commons.net.*这个包,这样会优先加载项目中的jar包,完毕!

    198c6f821917da39c26b4fa31564fd99.png

    相关推荐:《java学习》

    展开全文
  • java操作FTP工具类

    2015-05-10 22:36:49
    java操作FTP工具类:实现基本断点上传下载、实现上传下载进度汇报、实现中文目录创建及中文文件创建,添加对于中文的支持
  • java通过上传文件至ftp服务器

    千次阅读 2021-11-22 20:00:23
    ftp工具类 import org.apache.commons.lang.StringUtils; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPFile; ...

    ftp工具类

    import org.apache.commons.lang.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 org.springframework.stereotype.Component;
    
    import java.io.*;
    import java.util.function.Function;
    
    
    /**
     *
     * @author 答案
     */
    @Component
    public class FtpHelper implements Closeable {
        private final static Logger log = LoggerFactory.getLogger(FtpHelper.class);
        private FTPClient ftp = null;
        boolean _isLogin = false;
        public static FtpHelper getInstance() {
            return new FtpHelper();
        }
    
        /**
         *
         * ftp 匿名登录
         * @param ip ftp服务地址
         * @param port 端口号
         */
        public boolean login(String ip,int port){
            //如果没有设置ftp用户可将username设为anonymous,密码为任意字符串
            return login(ip, port,"anonymous","");
        }
        /**
         *
         * ftp登录
         * @param ip ftp服务地址
         * @param port 端口号
         * @param uname 用户名
         * @param pass 密码
         */
        public boolean login(String ip,int port, String uname, String pass) {
            ftp = new FTPClient();
    //		boolean flag=false;
            try {
                // 连接
                ftp.connect(ip,port);
                _isLogin = ftp.login(uname, pass);
                log.info(_isLogin?"登录成功":"登录失败");
                // 检测连接是否成功
                int reply = ftp.getReplyCode();
                if (!FTPReply.isPositiveCompletion(reply)) {
                    System.err.println("FTP服务器拒绝连接 ");
                    return false;
                }
                return true;
            } catch (Exception ex) {
                ex.printStackTrace();
                return false;
            }
        }
        /**
         * 上传后触发
         */
        public Function<FtpFileInfo, Boolean> onUploadFileAfter;
    
        /**
         *
         * ftp上传文件
         * @param localFileName 待上传文件
         * @param ftpDirName ftp 目录名
         * @param ftpFileName ftp目标文件
         * @return true||false
         */
        public boolean uploadFile(String localFileName
                ,String ftpDirName
                , String ftpFileName) {
            return uploadFile(localFileName, ftpDirName, ftpFileName,false);
        }
        /**
         *
         * ftp上传文件
         * @param localFileName 待上传文件
         * @param ftpDirName ftp 目录名
         * @param ftpFileName ftp目标文件
         * @param deleteLocalFile 是否删除本地文件
         * @return true||false
         */
        public boolean uploadFile(String localFileName
                , String ftpDirName
                , String ftpFileName
                , boolean deleteLocalFile) {
    
            if(StringUtils.isEmpty(ftpFileName))
                throw new RuntimeException("上传文件必须填写文件名!");
    
            File srcFile = new File(localFileName);
            if(!srcFile.exists())
                throw new RuntimeException("文件不存在:"+localFileName);
    
            try (FileInputStream fis = new FileInputStream(srcFile)) {
                //上传文件
                boolean flag = uploadFile(fis,ftpDirName,ftpFileName);
                //上传前事件
                if(onUploadFileAfter!=null){
                    onUploadFileAfter.apply(new FtpFileInfo(localFileName,ftpDirName,ftpFileName));
                }
                //删除文件
                if(deleteLocalFile){
                    srcFile.delete();
                    log.info("ftp删除源文件:{0}",srcFile);
                }
                fis.close();
                return flag;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            } finally {
            }
        }
    
    
        /**
         *
         * ftp上传文件 (使用inputstream)
         * @param ftpDirName ftp 目录名
         * @param ftpFileName ftp目标文件
         * @return true||false
         */
        public boolean uploadFile(FileInputStream uploadInputStream
                ,String ftpDirName
                , String ftpFileName) {
            if(StringUtils.isEmpty(ftpFileName))
                throw new RuntimeException("上传文件必须填写文件名!");
    
            try {
                // 设置上传目录(没有则创建)
                if(!createDir(ftpDirName)){
                    throw new RuntimeException("切入FTP目录失败:"+ftpDirName);
                }
                ftp.setBufferSize(1024);
                //解决上传中文 txt 文件乱码
                ftp.setControlEncoding("GBK");
                FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
                conf.setServerLanguageCode("zh");
    
    
                // 设置文件类型(二进制)
                ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
                // 上传
                String fileName = new String(ftpFileName.getBytes("GBK"),"iso-8859-1");
                if(ftp.storeFile(fileName, uploadInputStream)){
                    uploadInputStream.close();
                    log.info("文件上传成功");
                    return true;
                }
    
                return false;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            } finally {
            }
        }
        /**
         * 下载文件
         * @param ftpDirName ftp目录名
         * @param ftpFileName ftp文件名
         * @param localFileFullName 本地文件名
         * @return
         *  @author xxj
         */
        public boolean downloadFile(String ftpDirName,
                                    String ftpFileName, String localFileFullName) {
            try {
                if("".equals(ftpDirName))
                    ftpDirName="/";
                String dir = new String(ftpDirName.getBytes("GBK"),"iso-8859-1");
                if(!ftp.changeWorkingDirectory(dir)){
                    log.info("切换目录失败:"+ftpDirName);
                    return false;
                }
                FTPFile[] fs = ftp.listFiles();
                String fileName = new String(ftpFileName.getBytes("GBK"),"iso-8859-1");
                for (FTPFile ff : fs) {
                    if (ff.getName().equals(fileName)) {
                        FileOutputStream is = new FileOutputStream(new File(localFileFullName));
                        ftp.retrieveFile(ff.getName(), is);
                        is.close();
                        log.info("下载ftp文件已下载:"+localFileFullName);
                        return true;
                    }
                }
                log.info("下载ftp文件失败:"+ftpFileName+";目录:"+ftpDirName);
                return false;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
    
    
        /**
         *
         * 删除ftp上的文件
         *
         * @param ftpFileName
         * @return true || false
         */
        public boolean removeFile(String ftpFileName) {
            boolean flag ;
            try {
                ftpFileName = new String(ftpFileName.getBytes("GBK"),"iso-8859-1");
                flag = ftp.deleteFile(ftpFileName);
                log.info(flag?"成功":"失败");
                return flag;
            } catch (IOException e) {
                e.printStackTrace();
                return false;
            }
        }
        /**
         * 删除空目录
         * @param dir
         * @return
         */
        public boolean removeDir(String dir){
            if(StringUtil.startWith(dir, "/"))
                dir="/"+dir;
            try {
                String d = new String(dir.toString().getBytes("GBK"),"iso-8859-1");
                return ftp.removeDirectory(d);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
        /**
         * 创建目录(有则切换目录,没有则创建目录)
         * @param dir
         * @return
         */
        public boolean createDir(String dir){
            if(StringUtils.isEmpty(dir))
                return true;
            String d;
            try {
                //目录编码,解决中文路径问题
                d = new String(dir.toString().getBytes("GBK"),"iso-8859-1");
                //尝试切入目录
                if(ftp.changeWorkingDirectory(d))
                    return true;
                dir = StringUtil.trimStart(dir, "/");
                dir = StringUtil.trimEnd(dir, "/");
                String[] arr =  dir.split("/");
                StringBuffer sbfDir=new StringBuffer();
                //循环生成子目录
                for(String s : arr){
                    sbfDir.append("/");
                    sbfDir.append(s);
                    //目录编码,解决中文路径问题
                    d = new String(sbfDir.toString().getBytes("GBK"),"iso-8859-1");
                    //尝试切入目录
                    if(ftp.changeWorkingDirectory(d))
                        continue;
                    if(!ftp.makeDirectory(d)){
                        log.info("[失败]ftp创建目录:"+sbfDir.toString());
                        return false;
                    }
                    log.info("[成功]创建ftp目录:"+sbfDir.toString());
                }
                //将目录切换至指定路径
                return ftp.changeWorkingDirectory(d);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
    
    
    
        /**
         *
         * 销毁ftp连接
         *
         */
        private void closeFtpConnection() {
            _isLogin = false;
            if (ftp != null) {
                if (ftp.isConnected()) {
                    try {
                        ftp.logout();
                        ftp.disconnect();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
    
        /**
         *
         * 销毁ftp连接
         *
         */
        @Override
        public void close() {
            this.closeFtpConnection();
        }
    
        public static class FtpFileInfo{
            public FtpFileInfo(String srcFile,String ftpDirName,String ftpFileName){
                this.ftpDirName=ftpDirName;
                this.ftpFileName=ftpFileName;
                this.srcFile=srcFile;
            }
            String srcFile;
            String ftpDirName;
            String ftpFileName;
            String ftpFileFullName;
    
            public String getSrcFile() {
                return srcFile;
            }
            public void setSrcFile(String srcFile) {
                this.srcFile = srcFile;
            }
            public String getFtpDirName() {
                return ftpDirName;
            }
            public void setFtpDirName(String ftpDirName) {
                this.ftpDirName = ftpDirName;
            }
            public String getFtpFileName() {
                return ftpFileName;
            }
            public void setFtpFileName(String ftpFileName) {
                this.ftpFileName = ftpFileName;
            }
            /**
             * 获取ftp上传文件的完整路径名
             * @return
             *  @author xxj
             */
            public String getFtpFileFullName() {
                return StringUtil.Combine("/",ftpDirName,ftpFileName);
            }
    
        }
    }

    工具类

    public final class StringUtil {
    
    
        /**
         * 删除起始字符
         * @param
         * @return
         *  @author xxj 2017年4月27日
         */
        public static String trimStart(String str,String trim){
            if(str==null)
                return null;
            return str.replaceAll("^("+trim+")+", "");
        }
    
        /**
         * 以字符开头
         * @param s
         * @return
         *  @author xxj 2017年4月27日
         */
        public static boolean startWith(String str,String s){
            return str.startsWith(s);
        }
    
        /**
         * 删除末尾字符
         * @param
         * @return
         *  @author xxj 2017年4月27日
         */
        public static String trimEnd(String str,String trim){
            if(str==null)
                return null;
            return str.replaceAll("("+trim+")+$", "");
        }
    
        /**
         * 去空格
         */
        public static String trim(String str)
        {
            return (str == null ? "" : str.trim());
        }
    
        /**
         * 合并路径
         * @param args
         * @return
         *  @author xxj 2017年4月27日
         */
        public static String Combine(String ...args){
            if(args==null || args.length==0)
                return "";
            StringBuffer sbf = new StringBuffer();
            for(String s:args){
    //			//纯协议开头不处理,如:http://,d:/,linux首个/不处理
    //			if(s.matches("^[a-zA-z]+://$")){
    //				sbf.append(s);
    //				continue;
    //			}
                //首位地址只删除尾部正反斜杠
                if(sbf.length()==0){
                    sbf.append(s.replaceAll("/{1,}$|\\{1,}$", ""));
                    continue;
                }
    
                if(sbf.length()>0)
                    sbf.append("/");
                //去除首尾正反斜杠
                sbf.append(s
                        .replaceAll("^/{1,}|^\\{1,}", "")
                        .replaceAll("/{1,}$|\\{1,}$", ""));
            }
    
            return sbf.toString();
        }
    
    }
        public static File transferToFile(MultipartFile file) throws Exception{
    //        选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。
            File toFile = null;
            if (file.equals("") || file.getSize() <= 0) {
                file = null;
            } else {
                InputStream ins = null;
                ins = file.getInputStream();
                toFile = new File(file.getOriginalFilename());
                inputStreamToFile(ins, toFile);
                ins.close();
            }
            return toFile;
    
        }

    测试

        @CrossOrigin
        @PostMapping("/ftp/uploading")
        public Map<String, Object> ftpImageByCover(MultipartFile file) throws Exception {
    
            File transferToFile = FileUtil.transferToFile(file);
    
            //登录ftp服务器,使用用户名 和密码
            ftpHelper.login(host,21,username, password);//改成自己的
            //上传文件
            FileInputStream inputStream = new FileInputStream(transferToFile);
    
            ftpHelper.uploadFile(inputStream,path,transferToFile.getName());
    
            return this.getJsonMap();
        }

     

     linux离线安装ftp:CentOS7.9 离线安装FTP服务器_答案的博客-CSDN博客

    原文:java-FTPClient-ftp 上传文件、创建目录(支持中文目录、文件名)_草青工作室 的专栏-CSDN博客

    展开全文
  • java实现文件上传ftp服务器上 内容精选换一换域名认证时,需要将下载的认证文件上传到网站根目录,然后进行认证。用户使用的服务器不同,文件上传的位置有所不同,请参照以下方法完成认证文件的上传。如果网站所...
  • java上传ftp文件

    2012-06-18 09:26:13
    java上传ftp文件
  • 本篇文章主要介绍了Apache FTP实现文件上传、下载、修改文件名、删除,实现了FTP文件上传(断点续传)、FTP文件下载、FTP文件重命名、FTP文件删除等功能,有需要的可以了解一下。
  • java实现ftp文件上传 1、ftp文件上传步骤 1)连接ftp 2)检查工作目录是否存在 3)检查是否上传成功 4)完成任务后,断开ftp 2、具体如下,直接贴上核心代码: A)导入核心pom依赖 <!--FTP包--> <...
  • 使用apache的common-net.jar,实现ftp文件的上传和下载,封装成工具类,方便开发。
  • 主要介绍了JAVA技术实现上传下载文件到FTP服务器(完整),本文使用 Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作,需要的朋友可以参考下
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼我有一个javaftp程序,他既是客户端又是服务端,我把程序放在两台电脑上运行,computer1和computer2,在computer1为文件上传端,computer2为文件的接收端,在computer1...
  • 使用java进行ftp文件上传下载demo(含jar),项目能直接运行
  • NULL 博文链接:https://liugaojian13135.iteye.com/blog/837708
  • java FTP服务器文件上传下载,查找文件目录,不存在则添加,创建多级文件夹,java ,demo 直接使用,内有jar包
  • 搜索热词下面是编程之家 jb51.cc 通过网络收集整理的代码...import org.apache.commons.net.ftp.FTPClient;import java.io.FileInputStream;import java.io.IOException;public class FtpFileUpload {public static...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,099
精华内容 16,439
关键字:

java上传ftp