教你Springboot如何实现图片上传
1.首先图片上传,需要在数据库定义一个varchar类型的img字段图片字段

2.需要在pom文件加图片上传的配置文件
<!--上传图片-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>3.在yml里添加限制图片大小
#配置mysql的连接
spring:
#图片上传
servlet:
multipart:
enabled: true
max-file-size: 50MB
max-request-size: 50MB4.html页面定义div
<div class="form-group">
<label class="col-sm-2 control-label">图片</label>
<div class="col-sm-10">
<input name="goodsImg" id="testimg">
<!-- imgfile 是上传图片的参数 类型是 MultipartFile 文件类型
imgfile 必须和后台 上传图片的方法 uploadImg 参数保持一致 -->
<input type="file" multiple class="projectfile" accept="image/*" name="imgfile" id="goodsImg">
</div>
</div>js中定义函数 图片上传
<script>
//上传图片
function uploadImg(url){
$('#goodsImg').fileinput({
initialPreview:url,
//初始化图片配置:
initialPreviewConfig: [
{key: 1, showDelete: false}
],
//是否初始化图片显示
initialPreviewAsData: true,
language: 'zh', //设置语言
uploadUrl: '/user/uploadImg', //上传的地址
allowedFileExtensions: ['jpg', 'gif', 'png'],//接收的文件后缀
showUpload: true, //是否显示上传按钮
showCaption: false,//是否显示标题
browseClass: "btn btn-primary", //按钮样式
maxFileCount: 2, //表示允许同时上传的最大文件个数
enctype: 'multipart/form-data',
validateInitialCount:true,
previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
}).on('fileuploaded', function(event, data, previewId, index) {
alert(data.response.path);//http
//http://localhost:8080/ssm_bootstrap/upload/1279fabb-5515-44e2-84e8-4a7dd79cc08c.JPG
var imgval = "http://"+ location.host+"/"+data.response.path;
$('#testimg').val(imgval);
});
}
</script>5.图片上传工具类
public class FileUtil {
//上传
/**
* <pre>uploadFile(上传)
* 创建人:wrx
* 创建时间:2023年3月29日 下午3:21:17
* 修改人:ba
* 修改时间:2023年3月29日 下午3:21:17
* 修改备注:
* @param imgfile
* @param request
* @return</pre>
*/
public static String uploadFile(MultipartFile imgfile,HttpServletRequest request){
//1、上传路径:项目发布tomcat服务器
//D:\workUtilsInstall\apache-tomcat-8.0.0\webapps\week_employee_hzy\\upload
String path = request.getServletContext().getRealPath("/")+"/upload";
File file = new File(path);
if(!file.exists()){//不存在
file.mkdirs();
}
//生成新的文件名称,原因:防止文件名称一样后者上传的文件会覆盖前者上传的文件(前提是文件名称必须一样并且在用一个目录下)
//生成新的文件名称,保证文件名称唯一有两种方法:
// 1.通过UUID实现文件名称唯一 (UUID会生成32位字母+数字唯一的一个字符串)
// 2.通过时间戳现文件名称唯一 (时间戳是毫秒级时间 时间会一直往上加,生成13位数字)注意只有java生成13位 其他则是10位比如oracle、mysql、php
// 获取时间戳
//long currentTimeMillis = System.currentTimeMillis();
//System.out.println(currentTimeMillis);
String uuid = UUID.randomUUID().toString();
String oldName = imgfile.getOriginalFilename();//1.jpg
String suffix = oldName.substring(oldName.lastIndexOf("."));
String newFile = uuid+suffix;
File file2 = new File(path+"\\"+newFile);
try {
imgfile.transferTo(file2);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "upload/"+newFile;
}
}6.Controller层调用图片上传方法
/**
*
*调用图片上传工具类
* @param imgfile
* @param request
* @return java.lang.String
* @author wrx
* @date 2023/5/17 0017 16:00
*/
@RequestMapping("uploadImg")
public String uploadImg(MultipartFile imgfile, HttpServletRequest request){
String filePath = FileUtil.uploadFile(imgfile, request);
System.out.println("{\"path\":\"" + filePath + "\"}");
return "{\"path\":\"" + filePath + "\"}";//可以
}
访问这个路径http://localhost:8080/upload/b54e356b-6dba-48ae-8ea1-27b4dad158b5.png
访问成功图片上传就完成了

到此这篇关于教你Springboot如何实现图片上传的文章就介绍到这了,更多相关Springboot图片上传内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Springboot项目打包如何将依赖的jar包输出到指定目录
公司要对springboot项目依赖的jar包进行升级,但是遇到一个问题,项目打包之后,没办法看到他里面依赖的jar包,版本到底是不是升上去了,没办法看到,下面通过本文给大家分享Springboot项目打包如何将依赖的jar包输出到指定目录,感兴趣的朋友一起看看吧2024-05-05
深入解析Spring Boot中的@ConfigurationProperties注解
本文主要介绍了深入解析Spring Boot中的@ConfigurationProperties注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2026-02-02
SpringBoot中@ComponentScan注解过滤排除不加载某个类的3种方法
这篇文章主要给大家介绍了关于SpringBoot中@ComponentScan注解过滤排除不加载某个类的3种方法,文中通过实例代码介绍的非常详细,对大家学习或者使用SpringBoot具有一定的参考学习价值,需要的朋友可以参考下2023-07-07
Springboot Autowried及Resouce使用对比解析
这篇文章主要介绍了Springboot Autowried及Resouce使用对比解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-06-06


最新评论