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

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入门)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然我们前面学习了很多的知识点&#xff0c;比如说在windows这边&#xff0c;用qt写界面&#xff0c;用opencv写图像处理代码&#xff1b;在linux…...

数据库事务问题整理-MySQL

什么是数据库事务&#xff1f; 数据库事务( transaction)是访问并可能操作&#xff08;增删改查都可能有&#xff09;各种数据项的一个数据库操作序列&#xff08;可能有1或多个SQL语句&#xff09;&#xff0c;这些操作要么全部执行,要么全部不执行&#xff0c;是一个不可分割…...

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器&#xff1a; 二、Queue队列 三、Map映射 四、题目&#xff08;快递分拣 vector&#xff09;&#xff1a; 代码&#xff1a; 五、题目&#xff08;CLZ银行问题 queue&#xff09;&#xff1a; 代码&#xff1a; 六、题目&#xff08;费里的语言 map&…...

Ansible playbook 简介 使用场景

Ansible playbook 简介 playbook 是 ansible 用于配置&#xff0c;部署&#xff0c;和管理被控节点的剧本。   通过 playbook 的详细描述&#xff0c;执行其中的一系列 tasks &#xff0c;可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的一系…...

TS总结10、ts的 class 类型(配置项strictPropertyInitialization、非空断言)

一、简介 1.类&#xff08;class&#xff09;是面向对象编程的基本构件&#xff0c;封装了属性和方法 1.1、属性的类型&#xff1a;类的属性可以在顶层声明&#xff0c;也可以在构造方法内部声明&#xff0c;如果不给出类型&#xff1b;TypeScript 会认为x和y的类型都是any&a…...

leetcode 热题 100_找到字符串中所有字母异位词

题解一&#xff1a; 滑动窗口&#xff1a;类似于字符串匹配&#xff0c;但匹配异位词需要包含相同的字母及个数&#xff0c;可以分别用两个数组存储字符串s滑动窗口和字符串p的字母及个数&#xff0c;再用Array.equals()进行比对。对于s.length()<p.length()的情况需要特判。…...

百度百科数据爬取 python 词条数据获取

最近需要补充一些电力名词的解释&#xff0c;尤其是文字相关内容。百度百科上的词条质量有差异&#xff0c;因此我们需要先手工选择一些高质量词条。 假设我们选择了互感器页面中的仪用变压器词条&#xff0c;首先&#xff1a; import requests from bs4 import BeautifulS…...

为不同文章形式选择不同的WordPress文章模板

在写文章的时候选择不同的文章形式&#xff0c;然后打开文章的时候会调用不同文章形式的模板。比如&#xff0c;文章形式为video &#xff0c;就调用single-video.php模板&#xff0c;其它文章形式类似&#xff0c;可以添加多个文章样式。 //为不同文章形式的内容添加不同的si…...

MySQL存储引擎及索引机制

大家好我是咕噜美乐蒂&#xff0c;很高兴又和大家见面了&#xff01; MySQL 存储引擎是指 MySQL 数据库管理系统中负责存储和检索数据的组件&#xff0c;它们可以影响数据的存储方式、事务支持、并发性能等方面。而索引则是用于加速检索数据库表中数据的数据结构。下面我将分别…...

微信智能助手终极指南:零基础打造你的专属消息管家

微信智能助手终极指南&#xff1a;零基础打造你的专属消息管家 【免费下载链接】WechatBot 项目地址: https://gitcode.com/gh_mirrors/wechatb/WechatBot 你是否曾幻想过拥有一个24小时在线的微信助手&#xff0c;帮你自动回复消息、整理信息&#xff0c;让你从繁琐的…...

Hunyuan-MT-7B多场景实践:像素语言传送门在独立游戏开发、字幕生成、文档本地化中的三重应用

Hunyuan-MT-7B多场景实践&#xff1a;像素语言传送门在独立游戏开发、字幕生成、文档本地化中的三重应用 1. 像素语言传送门&#xff1a;当翻译遇见16-bit冒险 在独立游戏开发者的工作台上&#xff0c;一款名为"像素语言传送门"的工具正在改变传统翻译体验。这款基…...

1 (带目录)鸿蒙系统底层接口快速接入指南 | 鸿蒙开发筑基实战

鸿蒙系统底层接口快速接入指南 | 鸿蒙开发筑基实战 作者&#xff1a;杨建宾&#xff08;华夏之光永存&#xff09; 系列完整目录&#xff08;鸿蒙生态开发实战进阶全集・轻量进阶版&#xff09; 第一章&#xff1a;鸿蒙基础适配篇&#xff08;本文&#xff09; 1 鸿蒙系统底层接…...

为什么高端芯片都爱用Flip Chip?对比Wire Bonding的5大优势详解

为什么高端芯片都爱用Flip Chip&#xff1f;对比Wire Bonding的5大优势详解 在芯片封装领域&#xff0c;Flip Chip&#xff08;倒装芯片&#xff09;技术正逐渐成为高端应用的标配。想象一下&#xff0c;当你手持最新款智能手机&#xff0c;流畅运行着复杂的AI应用时&#xff0…...

万象视界灵坛应用场景:智能安防视频截图分析——自动识别‘是否含未授权人员/危险物品/异常行为’语义

万象视界灵坛在智能安防中的应用&#xff1a;自动识别异常语义分析 1. 智能安防的痛点与解决方案 传统安防监控系统面临三大核心挑战&#xff1a; 人力成本高&#xff1a;需要专人24小时盯守监控画面反应滞后&#xff1a;异常事件往往事后才发现漏检率高&#xff1a;人工监控…...

Pixel Aurora Engine基础教程:8-BIT音效视觉化——将MIDI转像素动态图初探

Pixel Aurora Engine基础教程&#xff1a;8-BIT音效视觉化——将MIDI转像素动态图初探 1. 认识Pixel Aurora引擎 Pixel Aurora是一款专为像素艺术创作设计的AI绘图工作站&#xff0c;它将现代AI技术与复古游戏美学完美融合。这款引擎最独特之处在于能将音乐数据转化为动态像素…...

OpenClaw v2026.4.1 深度剖析报告:任务系统、协作生态与安全范式的全面跃迁

摘要本报告旨在对 OpenClaw 于 2026 年 4 月 2 日发布的 v2026.4.1 版本进行一次全面、深入、颗粒度至极的技术与战略解构。该版本由 30 余位社区贡献者共同完成&#xff0c;标志着 OpenClaw 在经历了 3 月份“架构重塑”与“安全加固”的底层革命后&#xff0c;正式迈入“体验…...

Phi-4-mini-reasoning vLLM模型服务化:gRPC接口与Protobuf定义详解

Phi-4-mini-reasoning vLLM模型服务化&#xff1a;gRPC接口与Protobuf定义详解 1. 模型概述 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理。作为Phi-4模型家族的一员&#xff0c;它特别针对数学推理能力进行了…...

OpenClaw版本升级:Qwen3-4B兼容性测试与迁移方案

OpenClaw版本升级&#xff1a;Qwen3-4B兼容性测试与迁移方案 1. 升级前的准备工作 上周五晚上&#xff0c;当我准备给团队演示OpenClaw的自动化流程时&#xff0c;突然发现控制台弹出了版本更新提示。这个看似简单的升级通知&#xff0c;却让我经历了整整两天的兼容性调试。今…...

Wan2.2-I2V-A14B多场景应用:文旅宣传/电商主图/社交媒体动态生成

Wan2.2-I2V-A14B多场景应用&#xff1a;文旅宣传/电商主图/社交媒体动态生成 1. 开箱即用的视频创作利器 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能自动生成一段高清视频。这就是Wan2.2-I2V-A14B文生视频模型带来的革命性体验。无论你是文旅行业的宣传人…...