当前位置: 首页 > news >正文

JAVA-Web后端学习9 文件上传

妙にためいき热いって

文件上传

文件上传:将本地的文件例如图片、音频、视频等文件上传到服务器,供其他用户浏览和下载。

这是前端的上传文件的的HTML代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>上传文件</title>
</head>
<body><form action="/upload" method="post" enctype="multipart/form-data">姓名: <input type="text" name="name"><br>年龄: <input type="text" name="age"><br>头像: <input type="file" name="file"><br><input type="submit" value="提交"></form></body>
</html>

效果如下:
image
使用<form>创建交互表单时添加了三个属性

action="/upload 表示目标提交的指定地址是/upload
method="post" 表示使用 HTTP POST 方法提交数据
enctype="multipart/form-data" 表示设置表单数据编码类型为多部分格式,用于文件上传。如果移除的话,那么将无法上传文件格式的数据

接下来设置后端控制层代码然后执行,其中我们要设置后端控制层接收参数名和前端传递参数名一致,

@RestController
public class UploadController {@PostMapping("/upload")public ResultData uploadFile(String name, Integer age, MultipartFile file) {System.out.println("Now we Get : "+name+" , "+age+" , "+file);return ResultData.success();}
}

其中MultipartFileSupreme提供的类,用于接受前段传递的文件信息
执行结果如下:
image

其中我们打断点查看后端接受的前段信息如下:
image
临时文件打开后内容如下:
image
继续执行,临时文件夹内容被清空
image
由于我们是上传文件,所以我们必须要想办法保存文件

文件存储

存储文件的话控制层代码如下。使用file.getOriginalFilename()方法来获取文件名称,使用file.transferTo方法来存储文件:

@PostMapping("/upload")
public ResultData uploadFile(String name, Integer age, MultipartFile file) throws IOException {System.out.println("Now we Get : "+name+" , "+age+" , "+file);String originalFileName = file.getOriginalFilename();file.transferTo(new File("E:/UploadFile/"+originalFileName));return ResultData.success();
}

考虑到如果多人都存储同一个文件的话,需要将存储后的文件重新命名以防止文件名冲突,这里使用UUID.randomUUID()方法获得随机ID来命名存储后的文件:

@PostMapping("/upload")
public ResultData uploadFile(String name, Integer age, MultipartFile file) throws IOException {System.out.println("Now we Get : "+name+" , "+age+" , "+file);String originalFileName = file.getOriginalFilename();if (originalFileName != null) {//获取文件扩展名String extension = originalFileName.substring(originalFileName.lastIndexOf("."));//使用随机ID拼接扩展名来获取新文件名String newFileName = UUID.randomUUID() + extension;file.transferTo(new File("E:/UploadFile/"+newFileName));}return ResultData.success();
}

命名后的文件如下
image

同时上传文件需要在application.yml中添加如下配置信息:

spring:# 添加的文件配置信息如下servlet:multipart:# 最大单个文件大小max-file-size: 10MB# 最大请求大小(所有文件以及表单数据累计大小)max-request-size: 100MB

阿里云存储

阿里云对象存储OSS(Object Storage Service),是一款海量、安全、可靠、低成本的云存储服务。使用OSS,你可以通过网络随时存储和调用包括文本、图片、视频在内的各种文件。

PS:由于这个东西要收费的,所以我就不使用了,象征性的传个文件就当可以了

http://www.jsqmd.com/news/524037/

相关文章:

  • 智慧城市之道路障碍物检测 移动机器人目标识别数据集 斑马线识别 红绿灯识别 消防栓识别 盲道检测 路张数据集 yolo数据集第10600期
  • 2026年3月重庆GEO优化/AI内容营销/企业AI获客方案/AI 排名优化/AI 推荐位公司综合测评 - 2026年企业推荐榜
  • Generative Inpainting在商业应用中的10个成功案例
  • OpenClaw 太难装了?试试 LangTARS:一行命令部署 + WebUI 管理面板,还能接入 Dify/Coze/n8n​​
  • 延迟渲染与PBR技术:cpp-game-engine-book现代渲染管线完全指南
  • 腾讯游戏用户增长技术体系:从特征工程到联邦学习的全链路实践
  • 2026年四川成都企业AI搜索优化服务市场洞察与核心服务商甄选指南 - 2026年企业推荐榜
  • Python+OpenCV实战:5分钟搞定亚像素级图像对齐(附完整代码)
  • feapder数据采集任务数据安全审计:操作日志与访问记录分析
  • 5分钟搞定uniapp调用支付宝扫码功能(最新mPaaS插件教程)
  • 桌面端 Claw 个人微信接入指南
  • 高级防护策略:rate-limiter-flexible防暴力破解与DoS攻击
  • 2026年3月重庆GEO优化/AI内容营销/企业AI获客方案/AI 排名优化/AI 推荐位公司哪家好 - 2026年企业推荐榜
  • 杭州亦心文化有限公司,聚焦企业管理咨询赋能高质量发展
  • 基于动态加权的多尺度残差网络旋转机械故障诊断算法 针对传统的机械故障诊断方法特征提取困难问题
  • Qwen2.5-0.5B推理成本太高?免费商用方案节省90%费用
  • GD32F470ZGT6开发板入门:用STM32CubeMX快速搭建梁山派工程模板(避坑指南)
  • MySQL日志管理实战:错误日志、二进制日志排查与慢查询优化(附常用命令清单)
  • RE:DOM与React对比分析:何时选择轻量级UI库
  • 如何快速编译DOOM-3:Windows、Linux、MacOS三平台完整指南
  • FreeRTOS 列表(List)与列表项(ListItem)详解
  • TwitchDownloader社区贡献指南:如何参与翻译、主题开发与功能扩展
  • Ostrakon-VL-8B实战落地:某区域商超用其替代人工巡检,单店月省23工时
  • UniApp跨平台文件下载避坑指南:鸿蒙OS/Android/iOS三端兼容方案
  • PyTorch分布式训练实战:1F1B交错式调度模式如何提升GPU利用率(附代码)
  • Python实战:利用pandas与openpyxl高效实现Excel与字典双向转换
  • Toaster快速上手:10分钟学会Android高级Toast定制技巧
  • 开源大模型部署案例:OFA-COCO distilled版与LangChain集成构建视觉智能体(Vision Agent)
  • Whisper Streaming核心组件深度解析:从ASR到VAD的实时语音转录系统
  • PSBits权限提升技巧:10个方法获取Windows系统完全控制权