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

web文件上传

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

前端需求

想要进行文件上传对于web前端来说有三个重要要素

1.<input type="file" name="image"> 提供这样的file文件上传格式
2. method="post" 由于上传文件一般比较大,所以上传格式采用post类型
3. enctype="multipart/form-data" 设置文件编码格式,如果不选这个提交的就是文件名

action="/upload"表示提交的位置

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

后端代码

  1. HTML中的name应该要与public Result upload()中的形参名称一一对应,如果没有对应记得进行映射。
  2. MultipartFile img用于图像对象
package com.ztt.controller;import com.ztt.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 username, Integer age, MultipartFile img){log.info("文件上传:{}{}{}",username,age,img);return Result.success();}
}

本地存储

服务端接收到上传的文件后,将文件保存到本地的磁盘目录上。

@Slf4j
@RestController
public class UploadController {@PostMapping("/upload")public Result upload(String username, Integer age, MultipartFile image) throws Exception{log.info("文件上传:{}{}{}",username,age,image);// 获取文件名称String originalFilename = image.getOriginalFilename();// 将文件存储在本地服务器的磁盘目录下image.transferTo(new File("D:\\images\\"+originalFilename));return Result.success();}
}

注意,本地存储的路径一定要事先准备好,否则会保存

java.io.IOException: java.io.FileNotFoundException: D:\images[3].jpg (系统找不到指定的路径。)

测试的话使用POSTMAN就可以,使用post发送,选择File文件发送即可。
在这里插入图片描述

在springboot中,文件上传单次允许最大为1MB。如果需要进行大文件上传,需要进行配置。

在resources中的application.properties中进行配置。
在这里插入图片描述

# 单个文件上传限制
spring.servlet.multipart.max-file-size=10MB# 单个请求最大限制
spring.servlet.multipart.max-request-size=100MB

保证文件名唯一性

如果存储在同一路径下,可能导致服务器路径重复或名称重复导致文件被覆盖。为解决这个问题,我们一般采用UUID的方法。

String originalFilename = image.getOriginalFilename();
// 将文件存储在本地服务器的磁盘目录下
// 获取文件扩展名
int index = originalFilename.lastIndexOf(".");
String exname = originalFilename.substring(index);String newFileName = UUID.randomUUID() + exname;
// 构造文件唯一性(不能重复) 适应 --uuid(通用唯一识别码)

阿里云OSS

在这里插入图片描述
java引入依赖

<!--阿里云OSS依赖-->
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version>
</dependency>

java 9 以上的版本还需要引入下面的依赖

<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version>
</dependency>
<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.3.3</version>
</dependency>

相关文章:

web文件上传

文件上传指的是&#xff0c;将本地的图片、视频、音频上传到服务器&#xff0c;提供给其他用户浏览和下载的过程 前端需求 想要进行文件上传对于web前端来说有三个重要要素 1.<input type"file" name"image"> 提供这样的file文件上传格式 2. metho…...

二刷LeetCode--48. 旋转图像(C++版本),数学题

思路&#xff1a;主要是观察变化之后的数组和最开始的数组的区别&#xff0c;不难发现&#xff0c;先转置在左右镜像对称即可。需要注意的是转置和镜像对称中for变量的终止条件。 class Solution { public:void rotate(vector<vector<int>>& matrix) {// 行数…...

神经网络改进:注重空间变化,权重参数调整,正则化, 熵的简单理解

目录 神经网络改进&#xff1a;注重空间变化 将高纬空间映射到地位空间便于表示&#xff08;供给数据&#xff09; 将地位空间映射到高纬空间进行分类聚合&#xff08;达到可分状态&#xff08;K-means&#xff09;&#xff09; 神经网络改进&#xff1a;权重参数调整 自注…...

快速入门vue3新特性和新的状态管理库pinia

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 Vue3.3新特性 defineOptions defineModel pinia 介绍 与 Vuex 3.x/4.x 的比较 安装 核心概念 定义…...

字符串经典问题

1. 验证回文串 验证回文串 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xff0c;如果它是 回文串 &#xff0c;返回 t…...

如何将图片应用于所有的PPT页面?

问题&#xff1a;如何快速将图片应用到所有PPT页面&#xff1f; 解答&#xff1a;有两种方法可以解决这个问题。第一种用母板。第二种用PPT背景功能。 解决有时候汇报的时候&#xff0c;ppt中背景图片修改不了以及不知道如何查找&#xff0c;今天按照逆向过程进行操作 方法1…...

打印技巧——word中A4排版打印成A3双面对折翻页

在进行会议文件打印时&#xff0c;我们常会遇到需要将A4排版的文件&#xff0c;在A3纸张上进行双面对折翻页打印&#xff0c;本文对设置方式进行介绍&#xff1a; 1、在【布局】选项卡中&#xff0c;点击右下角小箭头&#xff0c;打开页面设置选项卡 1.1在【页边距】中将纸张…...

2、手写模拟Spring底层原理

创建BeanDefinition bean定义 设置BeanDefinition 的类信息&#xff0c;作用域信息 创建beanDefinitionMap scope为原型&#xff1a; scope为单例&#xff1a; 总结&#xff1a; 扫描ComponentScan注解上的包扫描路径&#xff0c;将Component注解修饰的类&#xff0c;生成Bea…...

6篇 ICML 2023 杰出论文解析,涉及无学习率、LLM水印、域泛化等方向

ICML 全称 International Conference on Machine Learning&#xff0c;由国际机器学习学会&#xff08;IMLS&#xff09;举办&#xff0c;是计算机人工智能领域的顶级会议。今年的 ICML 大会已是第 40 届&#xff0c;共收到 6538 份投稿&#xff0c;有1827 份被接收&#xff0c…...

linux第三阶段--第三方软件(一)MySQL的概述和二进制安装(官网版)

MySQL介绍及安装 一、MySQL概述 DB2 POSTGRE-SQL 1、关系型数据库与非关系型数据库 RDBMS&#xff08;relational database management system&#xff09;&#xff0c;既关系型数据库管理系统。 简单来说&#xff0c;关系型数据库&#xff0c;是指采用了二维表格来组织数…...

AD域控制器将辅域控制器角色提升为主域控制器

背景 域控服务器迁移&#xff0c;已将新机器添加为该域的辅域控制器。 主域控制器&#xff1a;test-dc-01 辅域控制器&#xff1a;test-dc-02 需求将主辅域的角色进行互换&#xff0c;test-dc-01更换为辅域&#xff0c;test-dc-02更换为主域。 操作步骤 方法1 命令行修改AD域…...

Docker案例分析:创建并运行一个Redis容器

步骤一&#xff1a;到DockerHub搜索Redis镜像 步骤二&#xff1a;查看Redis镜像文档中的帮助信息 步骤三&#xff1a;利用docker run命令运行一个Redis容器 可以看到第二行的命令是支持数据持久化的创建容器命令&#xff0c;但是我们使用的命令如下&#xff1a; docker run -…...

银河麒麟服务器v10 sp1 .Net6.0 上传文件错误 access to the path is denied

上一篇&#xff1a;银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前&#xff0c;在Linux服务器上安装 libgdiplus 即可解决&#xff0c;libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者&#xff0c;是开源mono项目。地址…...

钝感力:项目经理的隐形盾牌

钝感力的定义 钝感力的起源和意义 钝感力&#xff0c;或者说对外部刺激的不敏感性&#xff0c;起源于我们的生存本能。在古代&#xff0c;人们面对各种危险和挑战&#xff0c;需要有一定的抗压能力&#xff0c;才能在恶劣环境中生存下来。这种能力使得我们的祖先能够在面对猛兽…...

成集云 | 乐享问题邀请同步企微提醒 | 解决方案

源系统成集云目标系统 方案介绍 腾讯乐享是腾讯公司开发的一款企业社区化知识管理平台&#xff0c;它提供了包括知识库、问答、课堂、考试、活动、投票和论坛等核心应用。这个平台凝聚了腾讯10年的管理经验&#xff0c;可以满足政府、企业和学校在知识管理、学习培训、文化建…...

【TypeScript】基础类型

安装 Node.js 环境 https://nodejs.org/en 终端中可以查到版本号即安装成功。 然后&#xff0c;终端执行npm i typescript -g安装 TypeScript 。 查到版本号即安装成功。 字符串类型 let str:string "Hello"; console.log(str);终端中先执行tsc --init&#xf…...

c++控制台双人格斗小游戏(测试版)

嗨嗨嗨,又是我! 我又来发博客啦! 最近太闲了,又做了个small游戏:小人-格斗(测试版) 上代码! 记得加上gamesio.h哦 #include<cstring> #include<conio.h> #include"gamesio.h" //宏定义一些常量(可更改) #define BULLETNUM 300//子弹最大数量 #defin…...

flink jira 提交开源bug

注册apache issue账号,并申请flink空间的权限后. 提问题/bug 查看已经提交的问题:...

华为杯”研究生数学建模竞赛2018年-【华为杯】D题:基于卫星高度计海面高度异常资料 获取潮汐调和常数方法及应用(续)

目录 5.3 沿轨道各分潮的潮汐调和常数的正压潮和内潮的分离 5.3.1 数据处理 5.3.2 模型准备...

HTTP连接管理

基础知识&#xff1a;非持久连接 HTTP初始时1.0版本在浏览器每一次向服务器请求完资源都会立即断开TCP连接&#xff0c;如果想要请求多个资源&#xff0c;就必须建立多个连接&#xff0c;这就导致了服务端和客户端维护连接的开销。 例如&#xff1a;一个网页中包含文字资源也包…...

3步搞定B站视频下载:BBDown让你的收藏从未如此简单 [特殊字符]

3步搞定B站视频下载&#xff1a;BBDown让你的收藏从未如此简单 &#x1f3ac; 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 还在为无法离线观看B站优质内容而烦恼吗&#xff1f;BBDo…...

Go项目安全左移实践:集成Security-Shield实现自动化漏洞与密钥检测

1. 项目概述与核心价值 在当今的软件开发与运维实践中&#xff0c;应用安全已经从“附加题”变成了“必答题”。无论是个人开发者的小型项目&#xff0c;还是企业级的复杂系统&#xff0c;都面临着来自网络的各种潜在威胁。然而&#xff0c;安全工具的引入往往伴随着陡峭的学习…...

用100道题拿下你的算法面试(链表篇-7):复制带随机指针的链表

一、面试问题 给定一个链表的头节点&#xff0c;链表中每个节点都包含两个指针&#xff1a;一个指向下一个节点的 next 指针&#xff0c;以及一个指向链表中任意节点的 random 指针。请复制该链表&#xff0c;并返回新链表的头节点。 二、【朴素解法】使用哈希表 —— 时间复杂…...

学术生产力革命已来,NotebookLM Agent如何把文献综述时间压缩83%?实测数据首次公开!

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM Agent研究辅助 NotebookLM 是 Google 推出的基于用户上传文档进行深度理解与推理的 AI 助手&#xff0c;其内置的 Agent 能力可显著提升学术研究、技术调研与知识整合效率。当启用 Agent 模…...

STM32+原理图+PCB程序直流充电桩主控方案源

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&#xff1a;行百…...

那些“假装很忙”的员工,正成为中小企业老板最大的管理黑洞

作为一名常年给企业做数字化诊断的顾问&#xff0c;我发现很多老板都有一个共同的“心病”&#xff1a;走进办公室&#xff0c;满屋子都是噼里啪啦的打字声&#xff0c;每个人看起来都在埋头苦干&#xff0c;但一到交付节点&#xff0c;进度总是莫名其妙地卡壳。这种“办公室伪…...

免费LLM API实战指南:从选型到架构的完整解决方案

1. 项目概述&#xff1a;一份免费LLM API的实用指南 如果你正在开发AI应用&#xff0c;或者只是想低成本地体验各种大语言模型&#xff0c;那么“API调用成本”绝对是一个绕不开的痛点。无论是OpenAI还是Anthropic&#xff0c;按Token计费的模式在频繁调用下&#xff0c;账单数…...

Tinke:免费开源NDS游戏资源提取工具,轻松解密任天堂DS游戏文件

Tinke&#xff1a;免费开源NDS游戏资源提取工具&#xff0c;轻松解密任天堂DS游戏文件 【免费下载链接】tinke Viewer and editor for files of NDS games 项目地址: https://gitcode.com/gh_mirrors/ti/tinke 你是否曾好奇NDS游戏内部藏着什么秘密&#xff1f;想要提取…...

终极指南:5分钟搭建SillyTavern AI聊天前端,解锁个性化角色对话体验

终极指南&#xff1a;5分钟搭建SillyTavern AI聊天前端&#xff0c;解锁个性化角色对话体验 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 想要创建专属的AI聊天伙伴&#xff0c;体验深度…...

osModa:基于NixOS与AI智能体的下一代服务器操作系统

1. 项目概述&#xff1a;为AI智能体而生的操作系统如果你和我一样&#xff0c;长期在服务器运维和AI应用部署的一线摸爬滚打&#xff0c;那你一定对这样的场景深有体会&#xff1a;凌晨三点&#xff0c;手机突然响起刺耳的告警&#xff0c;你睡眼惺忪地爬起来&#xff0c;SSH连…...