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
投稿

猜你喜欢

  • IntelliJ IDEA maven 构建简单springmvc项目(图文教程)

    2021-09-13 05:40:40
  • 使用HTTPclient保持长连接

    2023-10-17 12:29:34
  • Java原生服务器接收上传文件 不使用MultipartFile类

    2023-11-09 19:31:36
  • JAVA 字符串加密、密码加密实现方法

    2023-11-28 04:08:09
  • Java中遍历Map的六种方法实现

    2022-03-21 13:30:58
  • Spring实现动态切换多数据源的解决方案

    2023-05-21 13:07:15
  • Java基础:流Stream详解

    2023-11-29 06:11:14
  • 浅谈spring的重试机制无效@Retryable@EnableRetry

    2021-12-12 10:42:57
  • Java简单实现调用命令行并获取执行结果示例

    2023-02-08 18:53:32
  • SpringBoot+Nacos+Kafka微服务流编排的简单实现

    2023-03-21 10:34:53
  • java后端解决跨域的几种问题解决

    2022-01-05 06:34:24
  • Java框架---Spring详解

    2021-07-09 14:27:30
  • 妙解Java中的回调机制(CallBack)

    2022-07-15 15:25:31
  • Java建造者设计模式详解

    2022-09-19 13:14:11
  • JAVA实现单例模式的四种方法和一些特点

    2023-11-02 05:38:20
  • Java8 使用 stream().sorted()对List集合进行排序的操作

    2022-11-23 20:57:11
  • SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理方式

    2023-05-27 13:59:52
  • Android基于SoftReference缓存图片的方法

    2023-07-13 00:53:21
  • SpringCloud Eureka实现服务注册与发现

    2021-10-25 11:41:58
  • SpringMVC拦截器创建配置及执行顺序

    2023-06-06 20:41:16
  • asp之家 软件编程 m.aspxhome.com