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中方便管理。

注:

因为我们点击上传其实是将文件临时保存到我们计算机的一个临时文件夹内,如果我们不将其转存,本次请求结束后,文件也会自动删除。

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

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

相关文章

Servlet快速入门

什么是Servlet? Servlet可以用很多方式来描述,这取决于上下文。 是一种技术,它被用来创建一个Web应用程序。 是一个API,它提供了许多接口和类,包括文档。 是一个接口,创建任何Serwlet都必须实现这个接口。 是一个扩展…

Python影像变化监测-跟踪大盐湖的萎缩

使用 Google Colab 中的 Python 分析 Landsat-8 图像(2014-2023)以创建大盐湖表面区域的时间序列 目录 🌅大盐湖萎缩问题简介💾下载 Landsat-8 图像📈统计文件中的大盐湖地区时间序列⚙️处理 Landsat-8 图像🗺️大盐湖图像的可视化🎥 大盐湖缩小的延时摄影📉大盐…

通过联合部署DDoS高防和WAF提升网站防护能力

如果您的网站遭受的攻击既有流量型攻击,又混杂精巧的Web应用层攻击时(例如SQL注入、跨站脚本攻击、命令注入等)时,推荐您组合使用阿里云DDoS高防和Web 应用防火墙 WAF(Web Application Firewall)&#xff0…

C语言文件操作,linux文件操作,文件描述符,linux下一切皆文件,缓冲区,重定向

目录 C语言文件操作 如何打开文件以及打开文件方式 读写文件 关闭文件 Linux系统下的文件操作 open 宏标志位 write,read,close,lseek接口 什么是当前路径? linux下一切皆文件 文件描述符 文件描述符排序 C语言文件操…

【音视频开发好书推荐1】《RTC程序设计:实时音视频权威指南》

1、WebRTC概述 WebRTC(Web Real-Time Communication)是一个由Google发起的实时音视频通讯C开源库,其提供了音视频采集、编码、网络传输,解码显示等一整套音视频解决方案,我们可以通过该开源库快速地构建出一个音视频通…

牛客练习赛122

D:圆 正着求删除的最小代价不好做,采用逆向思维,求选择一些不相交的线段使得构成一个圆的代价尽量大,最后答案就是所有线段权值之和减去最大代价。 那么如何求这个最大代价呢?显然区间DP 老套路:破环成链&#xff0…

详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法

集合的概念 当我们需要保存一组一样(类型相同)的元素的时候,我们应该使用一个容器来存储,数组就是这样一个容器。 ● 数组的特点: 数组是一组数据类型相同的元素集合; 创建数组时,必须给定…

Discuz IIS上传附件大于28M失败报错Upload Failed.修改maxAllowedContentLength(图文教程)

下图:Discuz X3.5的系统信息,上传许可为1024MB(1GB) 论坛为局域网论坛,仅供内部同事交流使用! 使用官方最新的Discuz! X3.5 Release 20231221 UTF-8 下图:选择上传附件(提示可以最大上传100M)…

【Python】新手入门(2):避免将关键字作为标识符

Python新手入门(2):避免将关键字作为标识符 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1…

保护模式笔记九 中断门和IDT(中断描述符表)

段选择子: 先直观认识一下GDT和段选择子在逻辑地址转换为线性地址中的作用,例如: 给出逻辑地址:21h:12345678h,需要将其转换为线性地址 a. 选择子SEL21h0000000000100 0 01b,他代表的意思是&#xff1a…

Ruoyi框架上传文件

axios资料:axios中文文档|axios中文网 | axios axiosjson 默认情况下,axios将JavaScript对象序列化为JSON。 submit(data) {if (data && this.definitionId) {// 启动流程并将表单数据加入流程变量startProcess(this.definitionId, JSON.string…

数据可视化原理-腾讯-3D热力图

在做数据分析类的产品功能设计时,经常用到可视化方式,挖掘数据价值,表达数据的内在规律与特征展示给客户。 可是作为一个产品经理,(1)如果不能够掌握各类可视化图形的含义,就不知道哪类数据该用…

代码随想录刷题笔记-Day29

1. N皇后 51. N 皇后https://leetcode.cn/problems/n-queens/ 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数…

【Sql Server】C#通过拼接代码的方式组合添加sql语句,会出现那些情况,参数化的作用

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

JavaWeb JSP

JSP(Java Server Page)是J2EE的功能模块,是Java服务器页面,由Web服务器执行,作用就是降低动态网页开发难度,将Java代码与HTML分离,降低开发难度,本质就是Servlet。 Servlet的缺点&a…

pandas数据分析42——读取和写入stata和spss的数据格式

python就是胶水语言,啥文件基本都能读取,而且pandas作为数据分析最好用的包,其功能自然也很多,可以读取各种数据文件。 本次就来演示一下怎么读取stata文件,和spss文件,他们不仅储存了数据和变量&#xff…

C++--机器人的运动范围

目录 1. 题目 2. 思路 3. C代码测试 4. 测试结果 1. 题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格…

如何应对IT服务交付中的问题?

如何应对IT服务交付中的问题? 按需交付服务的挑战IT服务体系的复杂性恶性循环的形成学会洞察的重要性书籍简介参与方式 按需交付服务的挑战 一致性、可靠性、安全性、隐私性和成本效益的平衡:成功的按需交付服务需要满足这些要求,这需要服务…

html样式排版

<template><div class"box"><div class"header">头部</div><div class"main"><div class"left">菜单</div><div class"right"><div class"right-contentr"&g…

【C++】list模拟实现+反向迭代器

list模拟实现 list定义list用法list iterator的使用begin() end()rbegin()rend() reverse()sort()merge()unique()remove()splice() list模拟实现struct和class的区别list三个类模板默认成员函数构造函数拷贝构造函数赋值运算符重载析构函数 数据修改操作push_back()push_fron…