Java实现FTP上传到服务器

作者:HSBhuang 时间:2022-10-07 10:28:58 

简介

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>

来源:https://blog.csdn.net/HSBhuang/article/details/118364078

标签:Java,FTP,服务器
0
投稿

猜你喜欢

  • Spring Cloud基于zuul实现网关过程解析

    2021-09-11 06:52:19
  • 使用CursorLoader异步加载数据

    2021-10-06 12:17:31
  • Android中JSON的4种解析方式使用和对比

    2023-05-03 11:32:10
  • Java快速批量移动文件的实现方法

    2021-06-15 16:58:56
  • Java实现二叉堆、大顶堆和小顶堆

    2022-08-20 18:39:33
  • 实例化JFileChooser对象报空指针异常问题的解决办法

    2023-10-05 11:36:18
  • Spring依赖注入的三种方式小结

    2022-08-09 15:56:41
  • spring boot + mybatis实现动态切换数据源实例代码

    2021-11-14 03:37:59
  • Restful传递数组参数及注解大全

    2021-07-25 05:39:35
  • 详解WPF中的APP生命周期以及全局异常捕获

    2022-12-10 11:54:27
  • Java字符判断的小例子

    2023-08-26 17:29:49
  • Mapper类中存在名称相同的方法重载报错问题

    2023-04-04 02:44:39
  • Java中对象的深复制(深克隆)和浅复制(浅克隆)介绍

    2023-02-20 12:05:39
  • 三种Android单击事件onclick的实现方法

    2022-05-21 16:54:03
  • SpringBoot 如何实现异步编程

    2023-04-15 13:45:43
  • JavaWeb中上传和下载文件实例代码

    2023-11-04 10:24:00
  • 基于Java Springboot + Vue + MyBatis实现音乐播放系统

    2023-07-09 16:01:41
  • Java DelayQueue实现任务延时示例讲解

    2023-03-17 01:37:49
  • 解读classpath读取resources目录下的文件

    2023-01-25 05:49:36
  • java多线程抓取铃声多多官网的铃声数据

    2023-12-18 23:20:05
  • asp之家 软件编程 m.aspxhome.com