第十篇 文件上传

文件上传是指将本地(客户端)的文件通过网络传输到远程服务器的过程,是 Web 开发、客户端 / 服务端交互中最常见的功能之一。在 Java 开发场景中,通常特指浏览器(前端)或客户端程序将文件(如图片、文档、视频、压缩包等)提交到 Java 后端服务器,并由服务器接收、解析、存储(或进一步处理)的过程。

实现步骤

前端

1、必须使用表单提交

2、请求方法必须是post

3、设置表单 enctype=multipart/form-data属性

4、使用input type=file 标签,指定name属性

后端

1、使用MultipartFile类型接收文件

2、使用方法获取相应的参数

3、读取到文件后进行存储

前端代码:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户详情页面</title>
</head>
<body>
<!--    上传 头像-->
<form action="/user/login" method="post" enctype="multipart/form-data">
    <div>
        上传图片:
        <input type="file" name="userIcon" />
    </div>
    <div>
        <input type="submit" value="上传头像" />
    </div>
</form>
</body>
</html>

后端代码:

java 复制代码
/**
 * 演示文件上传操作
 */
@RestController
public class UploadFileController {

    /**
     * 文件上传方法
     */
    @RequestMapping("/user/login")
    public ResultObj uploadFile(MultipartFile userIcon) throws IOException {

        String originalFilename = userIcon.getOriginalFilename();
        System.out.println("originalFilename = " + originalFilename); //获取原文件名称
        String name = userIcon.getName();
        System.out.println("name = " + name); //表示获取表单上传 文件name值
        long size = userIcon.getSize();
        System.out.println("size = " + size); //获取上传文件大小
        String contentType = userIcon.getContentType();
        System.out.println("contentType = " + contentType); //表示上传文件类型  image/png
//        InputStream is = userIcon.getInputStream(); //获取根据输入流表现显示
        //把文件保存到指定目录下
        userIcon.transferTo(new File("F://class118/" + originalFilename));
        return ResultObj.ok();
    }
}
相关推荐
霸道流氓气质6 小时前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
云创智城-yuncitys6 小时前
YunParking 4.0:JDK 17 与 Spring Boot 3.2 的停车云升级
java·开发语言·spring boot
paopaokaka_luck7 小时前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts
frjc9 小时前
Spring AI 高级实战:ChatMemory、Tool Calling 与 MCP 架构解析
人工智能·spring·架构
学长毕设10 小时前
基于SpringBoot的网上流浪狗救助捐赠平台-附源码
java·spring boot·后端
码农的日常10 小时前
前后端Long精度丢失的踩坑
spring boot·架构
T量子永生11 小时前
Unisoc(紫光展锐) Kernel 6.18 DDK 编译框架详解
linux·运维·spring
杨运交11 小时前
086-对象存储模块-基于Spring Boot的文件存储模块监控设计与实现
java·spring boot·后端
麻瓜code11 小时前
Spring AI 全模块 API 字典一览(1.1.0 版)
人工智能·windows·spring
养军博客12 小时前
Spring Security 4.x / 5.x / 6.x 配置全对比:前后端不分离与前后端分离
java·后端·spring·springsecurity