javaweb 文件存储

news2024/10/11 15:31:20

文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。

文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。

上传文件的原始form表单,要求表单必须具备以下三点(上传文件页面三要素):

  • 表单必须有file域,用于选择要上传的文件

    <input type="file" name="image"/>
    
  • 表单提交方式必须为POST

    通常上传的文件会比较大,所以需要使用 POST 提交方式

  • 表单的编码类型enctype必须要设置为:multipart/form-data

    普通默认的编码格式是不适合传输大型的二进制数据的,所以在文件上传时,表单的编码格式必须设置为multipart/form-data

<form action="/upload" method="post" enctype="multipart/form-data">
	姓名: <input type="text" name="username"><br>
    年龄: <input type="text" name="age"><br>
    头像: <input type="file" name="image"><br>
    <input type="submit" value="提交">
</form>

后端:

  • 首先在服务端定义这么一个controller,用来进行文件上传,然后在controller当中定义一个方法来处理/upload 请求

  • 在定义的方法中接收提交过来的数据 (方法中的形参名和请求参数的名字保持一致)

    • 用户名:String name
    • 年龄: Integer age
    • 文件: MultipartFile image

    Spring中提供了一个API:MultipartFile,使用这个API就可以来接收到上传的文件

package com.intelligent_learning_aid_system.controller;

import com.intelligent_learning_aid_system.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@Slf4j
@RestController
public class UploadController {
    @PostMapping("/upload")
    public Result upload(String name, Integer age, MultipartFile image) {
        log.info("文件上传 {} {} {}", name, age, image);
        return Result.success();
    }
}

本地传输

    @PostMapping("/upload")
    public Result upload(String name, Integer age, MultipartFile image) throws IOException {
        log.info("文件上传 {} {} {}", name, age, image);

        // 本地上传
        String originalFileName = image.getOriginalFilename();
        image.transferTo(new File("E:\\BaiduNetdiskDownload\\day11-SpringBootWeb案例\\day11-SpringBootWeb案例\\讲义\\images\\" + originalFileName));
        return Result.success();
    }

在这里插入图片描述

使用UUID获取随机文件名:保证每次上传文件时文件名都唯一的。

    @PostMapping("/upload")
    public Result upload(String name, Integer age, MultipartFile image) throws IOException {
        log.info("文件上传 {} {} {}", name, age, image);

        // 本地上传
        String originalFileName = image.getOriginalFilename();
//        image.transferTo(new File("E:\\BaiduNetdiskDownload\\day11-SpringBootWeb案例\\day11-SpringBootWeb案例\\讲义\\images\\" + originalFileName));

        // 构造唯一的文件名 -- uuid(通用唯一标识符)
        int index = originalFileName.lastIndexOf(".");
        String extrname = originalFileName.substring(index);
        String newFileName = UUID.randomUUID().toString() + extrname;
        log.info("新的文件名:{}", newFileName);

        image.transferTo(new File("E:\\BaiduNetdiskDownload\\day11-SpringBootWeb案例\\day11-SpringBootWeb案例\\讲义\\images\\" + newFileName));

        return Result.success();
    }

在SpringBoot中,文件上传时默认单个文件最大大小为1M

那么如果需要上传大文件,可以在application.properties进行如下配置:

#配置单个文件最大上传大小
spring.servlet.multipart.max-file-size=10MB

#配置单个请求最大上传大小(一次请求可以上传多个文件)
spring.servlet.multipart.max-request-size=100MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双十一买些提高幸福感的生活单品!五款精选好物推荐~

双十一购物狂欢即将来临&#xff0c;这是一年一度的购物盛宴&#xff0c;家电和数码产品通常会在这个时期提供诱人的折扣。但品牌众多&#xff0c;每款产品又各有千秋&#xff0c;让人难以抉择。今天&#xff0c;我将分享一些在双十一期间值得考虑的高品质好物&#xff0c;让我…

【视频笔记】408新增知识点信号——里昂视频

文章目录 **2.信号****3.信号的实现**4.信号的处理**①忽略信号****②执行信号的默认操作****③捕获井处理信号**几个Linux支持的典型信号&#xff1a; **5.信号的产生**① **通过终端按键(键盘)产生信号**例如&#xff0c;CtrlC发送2号信号SIGINT、Ctrl\发送3号信号SIGQUIT② …

Matlab实现海洋捕食者优化算法优化回声状态网络模型 (MPA-ESN)(附源码)

目录 1.内容介绍 2部分代码 3.实验结果 4.内容获取 1内容介绍 海洋捕食者优化算法&#xff08;Marine Predators Algorithm, MPA&#xff09;是一种基于海洋生物捕食行为的新型群体智能优化算法。MPA通过模拟海洋捕食者如鲨鱼、海豚等在寻找猎物时的追踪、包围和攻击行为&…

双十一购买清单,应该如何选购宠物空气净化器,有哪几款推荐

作为一个宠物博主&#xff0c;每天都有人来问我家里养了猫应该怎么样才能清理浮毛&#xff0c;到底有哪些值得推荐。 这我可是有话说&#xff0c;当初就是心血来潮养了两只长毛猫&#xff0c;直到现在都还一直在清理猫咪掉毛的问题。猫咪掉的毛&#xff0c;不仅是会掉在沙发上…

EmEditor传奇脚本编辑器

主程序&#xff1a;EmEditor.exe 目前已有功能 可以自己指定一个快捷键 实现以下功能&#xff08;默认快捷键为&#xff1a;F1&#xff09; 以下全功能 都是鼠标所在行 按快捷键 &#xff08;默认快捷键&#xff1a;F1&#xff09; 1.在Merchant.txt中 一键打开NPC 没有…

11.Lab Ten —— mmap

内存映射文件&#xff08;Memory-Mapped File&#xff09;是一种将文件内容映射到进程的虚拟地址空间的技术&#xff0c;使得文件的内容可以像内存一样被访问。 通过内存映射文件&#xff0c;可以高效地访问和操作文件内容 首先切换到mmap分支 git checkout mmap make clean…

【机器学习】随机森林算法(看我以弱博强)

目录 算法引入&#xff1a; 算法介绍&#xff1a; 1. 集成学习&#xff1a; 2. 训练过程&#xff1a; 3. 分类和回归&#xff1a; 算法优点&#xff1a; 算法缺点&#xff1a; 算法实现&#xff1a; 1. 数据准备 2. 划分数据集 3. 创建随机森林模型 4. 训练模型 5…

Kubesphere4.1版本创建应用Mysql并实现外网访问

目前Kubesphere4.1版本可查创建应用资料较少&#xff0c;特此记录作为参考。 目标 使用Kubesphere4.1完成Mysql服务部署并实现外网访问。 具体流程如下&#xff1a; 1.创建企业空间 2.创建项目 3.创建应用仓库 4.创建应用&#xff08;mysql&#xff09; 5.配置外网访…

抖去推--短视频矩阵系统源码对外资料包

#短视频矩阵系统源码# #短视频矩阵系统源码开发# #短视频矩阵系统源码打包# 一、短视频矩阵系统源码安装 安装环境 短视频矩阵系统源码需要以下环境&#xff1a; PHP 7.0 及以上 MySQL 5.5 及以上 Nginx / Apache Redis FFMpeg 下载源码 从官网下载最新版本的短视频矩阵系统…

浅谈云原生--微服务、CICD、Serverless、服务网格

往期推荐 浅学React和JSX-CSDN博客 一文搞懂大数据流式计算引擎Flink【万字详解&#xff0c;史上最全】-CSDN博客 一文入门大数据准流式计算引擎Spark【万字详解&#xff0c;全网最新】_大数据 spark-CSDN博客 目录 1. 云原生概念和特点 2. 常见云模式 3. 云对外提供服务的…

【linux】麒麟v10安装prometheus监控(ARM架构)

Prometheus介绍 Prometheus 是一个开源的系统监控和警报工具包&#xff0c;最初由 SoundCloud 开发&#xff0c;现在是一个独立的开源项目&#xff0c;并且是云原生计算基金会&#xff08;CNCF&#xff09;的一部分。Prometheus 以其强大的数据模型和灵活的查询语言&#xff0…

线下餐厅自主点餐或外卖配送小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 线下餐厅自主点餐或外卖配送小程序源码系统是一款专为餐饮行业打造的智能化解决方案。它融合了自主点餐、外卖配送、订单管理、数据分析等多种功能&#xff0c;为餐厅提供了一站式的服务平台。通过该系统&#xff0c;餐厅可以实现线上线下一体化运营&#xff0c;提高工…

猿人学 — 第1届第3题(解题思路附源码)

猿人学 — 第1届第3题 翻页发现一共有两个请求 第一个请求&#xff1a;返回状态码为202&#xff08;服务器已经接收请求&#xff0c;但尚未处理&#xff09;&#xff0c;响应头中还有一个Set-Cookie 第二个请求&#xff1a;返回了我们想要的数据&#xff0c;携带的Payload中…

基于M芯片MAC系统的hadoop、zookeeper、hbase安装

hadoop、zookeeper、hbase安装 1. vmware配置 搜索&#xff1a;“vmware for mac”&#xff0c;购买正版并下载&#xff0c;或通过其他渠道下载均可 随机掉落的奇怪链接 2. 下载镜像并安装虚拟机 bug记录1 此处选用ubuntu的20以及24&#xff0c;分别出现无法加载安装程序、…

会话管理:深入理解SQLAlchemy会话及其事务处理

引言 SQLAlchemy是一个流行的Python SQL工具包和对象关系映射&#xff08;ORM&#xff09;系统&#xff0c;它提供了一个高层的ORM以及底层的SQL表达式语言。在SQLAlchemy中&#xff0c;会话&#xff08;Session&#xff09;是与数据库交互的核心概念&#xff0c;它不仅负责对…

外卖配送小程序源码系统 带源代码包以及搭建部署教程

系统概述 外卖配送小程序源码系统是一套完整的解决方案&#xff0c;旨在帮助用户快速搭建自己的外卖配送平台。它融合了先进的技术和创新的设计理念&#xff0c;为用户提供了一个稳定、高效、易用的系统环境。 该系统基于移动端开发&#xff0c;能够与各种操作系统兼容&#…

2.stm32 GPIO输出

GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 可配置为8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 …

网络变压器的作用是什么

在网络通讯主板上,在PHY芯片与RJ45连接器之间,会有一个黑属的小方块,这个东西就叫网络变压器,书名"数据录”人们常把它称为网络隔真变压务,LAN变压客,局域网变压器,滤波器等。 它在一块网络设备接口上所起的作用主要有两个; 一、传输数据,它把PHY送出来的差分信号用差模合…

电子元器件是电子电路中的基本组成部分

电子元器件是电子电路中的基本组成部分&#xff0c;主要包括以下几类&#xff1a; 一、电阻器 作用 限流&#xff1a;限制电路中的电流大小。分压&#xff1a;将电压按照一定比例分配。负载&#xff1a;作为电路中的负载元件。 分类 固定电阻&#xff1a;阻值固定不变。可变电阻…