themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...

实现文件上传和回显

1、新建一个SpringBoot项目,选择 Spring Web 和 thymeleaf 依赖 。pow.xml文件下的依赖如下

2、根据下图,创建如下文件

3、直接上代码

配置文件 application.xml

server:

port: 8005

file:

upload:

path: F://upload/

relationImg: /images/

配置类 MyWenMvcConfigurer.java

/**资源映射路径*/@Configurationpublic class MyWebMvcConfigurer implementsWebMvcConfigurer {/**保存的真实地址*/@Value("${file.upload.path}")

String sysPath;/**请求的相对地址*/@Value("${file.upload.relationImg}")

String relationImg;

@Overridepublic voidaddResourceHandlers(ResourceHandlerRegistry registry) {/**将相对地址映射到真实地址*/registry.addResourceHandler(relationImg+"**").addResourceLocations("file:/"+sysPath+relationImg);

}

}

服务层接口 UploadService.java

public interfaceUploadService {/**保存文件并返回文件的相对路径*/

publicString uploadImg(MultipartFile file);

}

服务层实现类 UploadServiceImpl.java

@Servicepublic class UploadServiceImpl implementsUploadService {

@Value("${file.upload.path}")

String sysPath;

@Value("${file.upload.relationImg}")

String relationImg;

@OverridepublicString uploadImg(MultipartFile file) {//uuid生成的唯一前缀 + 上传文件名 构成唯一的新文件名

String fileName= UUID.randomUUID()+"_"+file.getOriginalFilename();//文件保存路径

String path=sysPath+relationImg;//新建文件filepath

File filepath=newFile(path,fileName);//判断路径是否存在,如果不存在就创建一个

if(!filepath.getParentFile().exists()){

filepath.getParentFile().mkdirs();

}try{//将上传的文件file写入文件filepath

file.transferTo(new File(path+File.separator+fileName));

}catch(IOException e){

e.printStackTrace();

}//将请求文件的相对路径返回

return relationImg+fileName;

}

}

控制类 UploadController.java

@Controllerpublic classUploadController {

@Autowired

UploadService uploadService;

@GetMapping("/uploadImg")publicString getuploadImg(){return "/upload/uploadImg";

}

@PostMapping("/uploadImg")public String uploadImg(@RequestParam("file")MultipartFile file, Model model){

String imgUrl=uploadService.uploadImg(file);

model.addAttribute("imgUrl",imgUrl);return "/upload/uploadImg";

}

}

视图层 uploadImg.html

图片上传并回显图片地址:[[${imgUrl}]]

效果图:

真实保存路径:F:\upload\images

注意下面两张图的名字,第一张多了的前缀就是 UUID.randomUUID() 生成的,为了保证文件名的唯一性

单文件上传

控制层 FileController.java

@Controllerpublic classFileController {//单文件上传页面跳转

@GetMapping("/singleUpload")publicString singleUpload(){return "singleUpload";

}//单文件上传管理

@PostMapping("/singleUploadFile")public String singleUploadFile(HttpServletRequest httpServletRequest, MultipartFile file, Model model) throwsIOException {//获取文件名以及后缀名

String fileName=file.getOriginalFilename();//重新生成文件名(根据具体情况生成对应文件名)

fileName= UUID.randomUUID()+"_"+fileName;//指定上传文件本地存储目录,不存在需要提前创建

String dirPath="F:/file/";

File filePath=newFile(dirPath);//指定上传文件本地存储目录,不存在需要提前创建

if(!filePath.exists()){

filePath.mkdirs();

}try{//将文件写入磁盘

file.transferTo(newFile(dirPath,fileName));

model.addAttribute("uploadStatus","上传成功");

}catch(Exception e){

e.printStackTrace();

model.addAttribute("uploadStatus","上传失败:"+e.getMessage());

}//将带上传状态信息回调到文件上传页面

return "singleUpload";

}

}

singleUpload.html

单文件上传

上传成功!

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

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

相关文章

sqlite3_setp

这个过程用于执行有前面sqlite3_prepare创建的准备语句。这个语句执行到结果的第一行可用的位置。继续前进到结果的第二行的话,只需再次调用sqlite3_setp()。继续调用sqlite3_setp()知道这个语句完成,那些不返回结果的语句(如:INS…

aix linux运维,运维老司机分享的八个AIX日常运维经验及案例

原文来自微信公众号:AIX专家俱乐部【经验分享】在AIX启动时,打开debug模式经常遇到aix无法启动,但又不知道pending在哪,因此打开启动过程的debug模式,对于诊断问题有很大的帮帮助。下面是打开debug的方法:打…

Mysql找不到mysql.sock怎么办?

1. #ps -aux|grep mysql 找mysql的进程. #kill mysql进程号 确定全部kill光 2.直接跳第3步,无效再使用第2步 /usr/local/mysql/bin/mysqld_safe --usermysql & 启动mysql. bin/mysql -u root -p 登陆mysql 3. 重启mysql服务,可以到mysql的安装目录下…

ssr无法在win10使用_Win10疑难解答无法使用怎么办-百度经验

Win10疑难解答无法使用的解决方法Win10系统打开疑难解答工具时只显示“出于安全考虑,某些设置由组策略控制”,怎么办?1、打开Windows10系统的控制面板,双击疑难解答,出现提示:出于安全考虑,某些…

sqlite3_column

这个过程从执行sqlite3_step()执行一个准备语句得到的结果集的当前行中返回一个列。每次sqlite3_step得到一个结果集的列停下后,这个过程就可以被多次调用去查询这个行的各列的值。对列操作是有多个函数,均以sqlite3_column为前缀 const void *sqlite3_…

linux中将hdfs数据导入hbase,将数据文件导入到HBase中

假设有一个TSV格式的数据文件test.dat(TSV是指数据文件中的每个字段是以制表符隔开的)首先,将test.dat上传到hdfs上,具体的命令如下:hadoop fs -copyFromLocal test.dat的路径名 /tmp/test.dat(/tmp是hdfs上的一个目录)执行以下命令就可以查…

ios13看怎么airpods电量_iPhoneXR查看airpods蓝牙耳机电量的三种方法

AirPods是苹果公司研发的一款蓝牙耳机,与方法一、当 AirPods 与 iPhoneXR 已经自动配对连接,这时想看耳机和盒子电量,只要在 iPhoneXR 屏幕点亮或解锁的情况下,在手机旁边打开 AirPods 收纳盒的盖子,手机便会自动弹出耳…

sqlite3_finalize sqlite3_close

sqlite3_finalize int sqlite3_finalize(sqlite3_stmt *pStmt); 这个过程销毁前面被sqlite3_prepare创建的准备语句,每个准备语句都必须使用这个函数去销毁以防止内存泄露。 在空指针上调用这个函数没有什么影响,同时可以准备语句的生命周期的任一时刻…

人这辈子没法做太多的事情

人这辈子没法做太多的事情,所以每一件都要做得精彩绝伦。转载于:https://www.cnblogs.com/xiandedanteng/p/3291585.html

magicbook linux系统换w7,荣耀magicbook怎么安装win7 荣耀magicbook安装win7方法

荣耀magicbook 2019笔记本是一款2019年上市的时尚轻薄笔记本电脑,这款电脑采用了amd ryzen 5系列处理器以及性能级独立显卡,能够满足用户们日常娱乐使用需求,那么荣耀magicbook 2019笔记本怎么使用u启动u盘启动盘安装win7系统呢?今天为大家分…

php 区块链算法_PoW/BFT等5种主流区块链共识算法的开源代码实现

共识算法是实现自主产权区块链的必不可少的关键环节,本文列出社区中相对成熟的区块链共识算法开源实现,包括BFT共识、Raft共识、Paxos共识、PoW共识等,可供希望开发自主产权区块链的团队参考学习。相关推荐:区块链开发系列教程1、…

makefile 的export问题

from http://againinput4.blog.163.com/blog/static/172799491201132693532418/ 1.在(parent,上层的)makefile中export出来变量,子makefile(sub make)中,是可以访问的。 2. 而同一级别的makefil…

单片机 串口 波特率 c语言 9600 11.0592mhz t1,PLC与单片机串口通信的实现

党强摘要:本文主要进行探讨单片机与可编程逻辑控制器plc之间的串行通信以及各个系统在通信技术中的应用,本文主要以at89c51单片机和fpi系列的单片机为例进行阐述单片机与plc的串行通信。关键词:plc 单片机 串行通信中图分类号:TP2…

PHP中的正则表达式函数preg_

preg_match(); //用于正则表达式的匹配,且只匹配一次 preg_match_all();//用于正则表达式的匹配,会对所有符合规则的都进行匹配 preg_replace(); //正则表达式替换函数 preg_splite(); //正则分割函数 preg_match ( mode, string subject , ar…

vue 离开页面时间_vue页面离开后执行函数的实例

vue页面离开后执行函数的实例如下所示:destroyed: function () {console.log("我已经离开了!");this.doSomething();},说明:destroyed是与methods、mounted同层级的以上这篇vue页面离开后执行函数的实例就是小编分享给大家的全部内…

Linux批量删除文件

find [目录名] -name [文件名] -exec rm -rf {} \; 例如:find ./ -name *.raw -exec rm -rf {} \; 其中, -exec 表示后面执行命令 {} 表示查询到的文件名 -rf 为删除命令rm的参数,r 表示递归删除, f表示不需要确认,两个…

c语言选择结构程序设计报告,C语言学习与总结---第四章:选择结构程序设计

选择结构程序设计4.1 if语句4.2 关系运算符和关系表达式4.2.1 关系运算符4.2.2 关系表达式4.3 逻辑运算符和逻辑表达式4.3.1 逻辑运算符4.3.2 逻辑表达式4.4 条件运算符和条件表达式4.5 选择结构的嵌套4.6 switch语句4.7 程序应用4.1 if语句If语句有三种基本形式(1)if (判断条件…

jQuery 请指出'$'和'$.fn'的区别?或者说出'$.fn'的用途。

http://hi.baidu.com/chy0806css/item/acc52425099c30ff50fd87eb Jquery为开发插件提供了两个方法,分别是: $.extend(obj);$.fn.extend(obj); 1.那么这两个分别是什么意思? $.extend(obj);是为了扩展jquery本身,为类添加新的方法 …

gentoo 安装时的网络配置

在变换根目录(chroot)前,需要拷贝dns文件 cp -L /etc/resolv.conf/mnt/gentoo/etc/resolv.conf 在变换根目录(chroot)后 1. 修改主机名称 nano -w /etc/conf.d/hostname 2. 修改工作组名称 nano -w /etc/conf.d/domainname rc-update add domainname default 3…

[每日一题] 11gOCP 1z0-052 :2013-09-1 RMAN-- repair failure........................................A20...

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10859315 正确答案:D 一、模拟上题的错误: 1、删除4号文件 [oraclemydb ~]$ cd /u01/app/oracle/oradata/ocm/ [oraclemydb ocm]$ rm -rf users01.dbf2、…