java实现文件上传到本地
很多时候我们都需要进行文件上传和下载的操作,具体怎么实现网上的代码其实也是挺多的,刚好我的项目中也遇到了文件上传和下载的需求,本篇博文具体讲解上传操作,下篇博文讲解下载操作。
我们具体来想一想要将一个从前端传来的文件进行上传到本地,分几个步骤:
一、获取文件名称
二、通过UUID创建一个新的文件名称
三、创建一个目录
四、将文件存放在刚刚创建好的文件中进行储存
好了,思路有了,那接下来写代码只是时间问题:
private String uploadFile(MultipartFile file) throws IOException {// 1、获取文件的原始文件名, 通过原始文件名获取文件后缀String filename=file.getOriginalFilename();String filetype=filename.substring(filename.lastIndexOf("."));// 2、使用UUID重新生成文件名,防止文件名称重复造成文件覆盖String newfilename = UUID.randomUUID().toString() + suffix;
// 3、创建一个目录对象File file1=new File("E:/PictureTool/UploadFile/");
//判断当前目录是否存在,不存在则创建if(!file1.exists()){file1.mkdirs();}
// 4、将文件上传到指定目录try{file.transferTo(new File("E:/PictureTool/UploadFile/"+newfilename));System.out.println("文件上传成功");return "E:/PictureTool/UploadFile/"+newfilename;}catch (Exception e){e.printStackTrace();System.out.println("文件上传失败");return "文件上传失败";}}
建议路径可以写成一个常量方便后期管理和防止代码出错,我这里返回的是存放文件的绝对路径,因为我后面的代码需要用到,读者可以根据自己的需求进行修改。
同样的你也可以将存放路径写在yml文件中:

使用的话就直接使用@Value注解引入就可以了:

推荐将代码存放在yml中方便管理。
注:
因为我们点击上传其实是将文件临时保存到我们计算机的一个临时文件夹内,如果我们不将其转存,本次请求结束后,文件也会自动删除。
相关文章:
java实现文件上传到本地
很多时候我们都需要进行文件上传和下载的操作,具体怎么实现网上的代码其实也是挺多的,刚好我的项目中也遇到了文件上传和下载的需求,本篇博文具体讲解上传操作,下篇博文讲解下载操作。 我们具体来想一想要将一个从前端传来的文件…...
基于springboot+vue的多媒体素材库的开发与应用系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
《GitHub新手入门指南:从零开始掌握基本用法》
在现代软件开发和技术社区中,GitHub已经成为了一个不可或缺的平台。它不仅是一个代码托管平台,更是一个技术交流、学习分享的社交平台。但对于初学者来说,GitHub可能会有些令人望而却步。本文将详细介绍GitHub的基本用法,帮助新手快速入门并融入这个充满活力的技术社区。 …...
K8S存储卷与PV,PVC
一、前言 Kubernetes(K8s)中的存储卷是用于在容器之间共享数据的一种机制。存储卷可以在多个Pod之间共享数据,并且可以保持数据的持久性,即使Pod被重新调度或者删除,数据也不会丢失。 Kubernetes支持多种类型的存储卷…...
(科目三)简答题汇总
模块一 信息和计算机基础 一、简述信息的的特征 【记忆技巧】普传功夫真驾驶 普遍性:信息是无时不有的,无时不在的载体依附性:信息不能独立存在,必须有载体。价值性:同一则信息,对不同的人来说,价值不同。时效性:同…...
8、Redis-Jedis、Lettuce和一个Demo
目录 一、Jedis 二、Lettuce 三、一个Demo Java集成Redis主要有3个方案:Jedis、Lettuce和Redisson。 其中,Jedis、Lettuce侧重于单例Redis,而Redisson侧重于分布式服务。 项目资源在文末 一、Jedis 1、创建SpringBoot项目 2、引入依赖 …...
(Linux学习六)用户特殊权限类型,suid,chattr,umask
一、特殊位suid,针对文件/程序时,具备临时提升权限 分析:root运行是超管的权限,普通用户运行时是普通用户的权限 root /usr/bin/cat(root) /root/file1.txt ok alice/usr/bin/cat(alice) /root/file1.txt 无法访问rootchmod us filename …...
Mysql 数据类型的转换之 cast()
语法 cast( value as type) value 要进行数据转换的值(可以为任何类型)。type 要转换为的数据类型。type 的常见的类型可以为 : decimal十进制浮点数。可以使用可选的 M 和 D 参数指定最大位数 (M) 和小数点后的位数 (D)float浮点数dou…...
python重命名指定文件夹下的所有文件
最近要测试OCR功能,图片的命名有点杂乱无章.每次找指定名字的图片非常的不容易,所以写了一个小工具来重名了所有的图片. 我这里就用0001到9999的字符串命名了. import os def rename_files(folder_path):# 获取文件夹中所有文件名files os.listdir(folder_path)num 1# 遍历…...
通过多线程并发方式实现服务器
与多进程实现对比来看。 示例来源于网络视频 #include <stdio.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> #include <ctype.h> #include <unistd.h> #include <fcntl.h>#include "wrap.h"#de…...
【C语言】指针超级无敌金刚霹雳进阶(但不难,还是基础)
点击这里访问我的博客主页~~ 对指针概念还不太清楚的点击这里访问上一篇指针初阶2.0 上上篇指针初阶1.0 谢谢各位大佬的支持咯 今天我们一起来学习指针进阶内容 指针进阶 一、指针变量1、字符指针变量2、数组指针变量①数组指针变量的定义②数组指针变量的初始化 3、函数指…...
上位机图像处理和嵌入式模块部署(qmacvisual入门)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 虽然我们前面学习了很多的知识点,比如说在windows这边,用qt写界面,用opencv写图像处理代码;在linux…...
数据库事务问题整理-MySQL
什么是数据库事务? 数据库事务( transaction)是访问并可能操作(增删改查都可能有)各种数据项的一个数据库操作序列(可能有1或多个SQL语句),这些操作要么全部执行,要么全部不执行,是一个不可分割…...
工具函数模板题(蓝桥杯 C++ 代码 注解)
目录 一、Vector容器: 二、Queue队列 三、Map映射 四、题目(快递分拣 vector): 代码: 五、题目(CLZ银行问题 queue): 代码: 六、题目(费里的语言 map&…...
Ansible playbook 简介 使用场景
Ansible playbook 简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。 通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的一系…...
TS总结10、ts的 class 类型(配置项strictPropertyInitialization、非空断言)
一、简介 1.类(class)是面向对象编程的基本构件,封装了属性和方法 1.1、属性的类型:类的属性可以在顶层声明,也可以在构造方法内部声明,如果不给出类型;TypeScript 会认为x和y的类型都是any&a…...
leetcode 热题 100_找到字符串中所有字母异位词
题解一: 滑动窗口:类似于字符串匹配,但匹配异位词需要包含相同的字母及个数,可以分别用两个数组存储字符串s滑动窗口和字符串p的字母及个数,再用Array.equals()进行比对。对于s.length()<p.length()的情况需要特判。…...
百度百科数据爬取 python 词条数据获取
最近需要补充一些电力名词的解释,尤其是文字相关内容。百度百科上的词条质量有差异,因此我们需要先手工选择一些高质量词条。 假设我们选择了互感器页面中的仪用变压器词条,首先: import requests from bs4 import BeautifulS…...
为不同文章形式选择不同的WordPress文章模板
在写文章的时候选择不同的文章形式,然后打开文章的时候会调用不同文章形式的模板。比如,文章形式为video ,就调用single-video.php模板,其它文章形式类似,可以添加多个文章样式。 //为不同文章形式的内容添加不同的si…...
MySQL存储引擎及索引机制
大家好我是咕噜美乐蒂,很高兴又和大家见面了! MySQL 存储引擎是指 MySQL 数据库管理系统中负责存储和检索数据的组件,它们可以影响数据的存储方式、事务支持、并发性能等方面。而索引则是用于加速检索数据库表中数据的数据结构。下面我将分别…...
长期使用后回顾 Taotoken 在 API 调用稳定性与客服响应上的综合体验
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用后回顾 Taotoken 在 API 调用稳定性与客服响应上的综合体验 作为一项服务于项目开发的基础设施,大模型 API 的…...
2026年论文党必备:降AI率平台测评与推荐指南
2026年真正好用的AI论文降重与改写工具,核心看降重效果、去AI味、格式保留、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …...
Windows硬件指纹保护终极教程:3步掌握EASY-HWID-SPOOFER安全使用
Windows硬件指纹保护终极教程:3步掌握EASY-HWID-SPOOFER安全使用 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 在数字时代,你的硬件信息正在被悄悄收集—…...
高校生最适用的AI论文网站是哪款?
国内高校学生在论文写作中越来越依赖AI工具,目前主流方案以本土化全流程工具为核心,结合通用大模型与专业辅助工具,覆盖选题构思、框架搭建、初稿撰写、内容降重、查重检测以及格式排版等关键环节,以下将深入解析并对比当前最适配…...
电子书转有声书终极指南:一键生成多语言AI有声读物
电子书转有声书终极指南:一键生成多语言AI有声读物 【免费下载链接】ebook2audiobook Generate audiobooks from e-books, voice cloning & 1158 languages! 项目地址: https://gitcode.com/GitHub_Trending/eb/ebook2audiobook 将你的电子书库变成随时可…...
从零到一:基于YOLOv8的AI自瞄终极指南
从零到一:基于YOLOv8的AI自瞄终极指南 【免费下载链接】yolov8_aimbot Aim-bot based on AI for all FPS games 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8_aimbot 想象一下,你正在玩最喜欢的FPS游戏,敌人从掩体后一闪而过&…...
7天职场内耗清零打卡计划
7天职场内耗清零打卡计划(极简好坚持)每天 3 件小事,不累不费脑,7 天稳住心态第一天:断胡思乱想别人随口一句话,当场听完就翻篇,绝不反复琢磨上班只盯自己手头事,不偷看别人忙不忙、…...
本地视频怎么去水印?2026 视频去水印方法与软件推荐指南
概述:为什么要给视频去水印 视频水印是内容平台的标识符,但在某些场景下会影响使用体验——比如下载的视频要用于素材库、制作集锦或进行二次编辑时,水印就成了累赘。本文总结了2026年最实用的本地视频去水印方法,涵盖手机小程序、…...
长期使用Taotoken Token Plan套餐对项目研发成本的控制效果
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken Token Plan套餐对项目研发成本的控制效果 在项目研发中,大模型API调用成本是预算管理的重要一环。对…...
终极指南:如何用OpenHTMLtoPDF轻松生成专业级PDF文档
终极指南:如何用OpenHTMLtoPDF轻松生成专业级PDF文档 【免费下载链接】openhtmltopdf An HTML to PDF library for the JVM. Based on Flying Saucer and Apache PDF-BOX 2. With SVG image support. Now also with accessible PDF support (WCAG, Section 508, PDF…...
