您现在的位置是:首页 > java技术交流java技术交流
springboot本地图片上传-上传图片到本地磁盘目录
上善若水2020-12-10 15:30:10【java技术交流】 2871人已围观
简介springboot结合layui实现图片上传功能,使用MultipartFiletransferTo()自带的方法实现本地上传图片,并设置addResourceHandlers实现图片回显功能。
springboot结合layui实现图片上传功能,使用MultipartFile transferTo()自带的方法实现本地上传图片,并设置addResourceHandlers实现图片回显功能。
1.前端layui js部分代码
//普通图片上传
var uploadInst = upload.render({
elem: '#test1'
, url: '/admin/upload/img?type=banner'
, before: function (obj) {
//预读本地文件示例,不支持ie8
obj.preview(function (index, file, result) {
$('#demo1').attr('src', result); //图片链接(base64)
});
}
, done: function (res) {
//如果上传失败
if (res.code > 0) {
return layer.msg(res.msg);
}
layer.msg('上传成功!');
$("input[name='cover']").val(res.data.src)
//上传成功
}
, error: function () {
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
}
});
2.后台控制器
@Controller
class AdminUploadController {
@PostMapping("admin/upload/img")
@ResponseBody
public Map<String, Object> img(@RequestParam(value = "file") MultipartFile file, @RequestParam String type) {
type = StringUtils.isEmpty(type) ? "article" : type;
String suffixName = UploadConstants.getSuffixName(file);
//生成文件名称通用方法
//创建文件
String newFileName = type + "/" + UploadConstants.getNewFileName(suffixName);
File destFile = new File(UploadConstants.BASE_PATH + type);
if (!destFile.exists()) {
destFile.mkdirs();
}
Map<String, Object> result = new HashMap<>();
try {
file.transferTo(new File(UploadConstants.BASE_PATH + newFileName));
result.put("code", 0);
result.put("msg", file.getOriginalFilename());
result.put("data", Map.of("src", UploadConstants.ACCESS_PATH + newFileName));
} catch (IOException e) {
result.put("code", 500);
result.put("title", "图片上传失败!" + e.getMessage());
}
return result;
}
}
UploadConstants类
@Component
public class UploadConstants {
public static String BASE_PATH = "E:/blog/upload/";
public static String ACCESS_PATH = "/upload/";
@Value("${upload.basePath}")
public void setUploadBasePath(String basePath) {
UploadConstants.BASE_PATH = basePath;
}
@Value("${upload.accessPath}")
public void setUploadAccessPath(String accessPath) {
UploadConstants.ACCESS_PATH = accessPath;
}
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation(UploadConstants.BASE_PATH);
return factory.createMultipartConfig();
}
/**
* @Description: 获取图片后缀
* @Param: [file]
* @return: java.lang.String
* @date: 2019/8/24 15:27
*/
public static String getSuffixName(MultipartFile file){
String fileName = file.getOriginalFilename();
return fileName.substring(fileName.lastIndexOf("."));
}
/**
* @Description: 生成文件名称通用方法
* @Param: [suffixName] 图片后缀
* @return: java.lang.String
* @date: 2019/8/24 15:29
*/
public static String getNewFileName(String suffixName){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
int random = new Random().nextInt(100);
StringBuilder tempName = new StringBuilder();
tempName.append(sdf.format(new Date())).append(random).append(suffixName);
return tempName.toString();
}
}
yam配置
upload:
basePath: E:/blog/upload/
accessPath: /upload/
3.总结
再图片上传时,如果配置的yml文件目录不存在,系统则会自动帮我创建,在上传主目录建立的子目录需要手动创建,否则无法上传。
上传的文件的扩展名需要手动分割字符串取扩展名,或许有专门的文件上传插件简化这一操作吧。
Tags: springboot图片上传
很赞哦! (10)
随机图文
-
让人捧腹大笑的笑话,专治各种不开心
1.本想对男神来个回眸一笑,可未曾料到天太冷,笑出了一个鼻涕泡儿。 2.每次别人问我路我都瞎指的,第一是因为我根本不认路,第二是为了给世人一个教训:不要随便相信长得好看的人。 3.高中老师:知不知道现在猪肉为什么这么贵?学生:不知道。老师:猪都坐到这里来了,能不贵吗? 4.最近出门不要穿裙子,容易被撩,天是好天,风不正经。 5.司机眼里只有两种人,比自己开的快的是傻逼,比自己开得慢的是菜鸟 -
php 自己打包一个composer包
今天尝试自己自己封装一个包,以后就可以直接composer安装方便复用,一开始看到别人有将官方提供 的包给做成composer包,方便使用,记录下自己的过成. 首先准备一个已经初始话过的仓库地址 并 -
幽默故事一
初中的时候,有一天,我在历史教科书上给秦始皇画墨镜,我的美女同桌忽然说,「我妈妈说,艺术家都是疯子。」我感觉受到了莫大的鼓舞,惊喜地抬起头看着她,眼睛里流光溢彩。她不解地白了我一眼,说,「你激动什么, -
fatal: could not read Username for 'https://gitee.com': No such device or address
在测试git拉取代码时fatal:couldnotreadUsernamefor‘https://gitee.com‘:Nosuchdeviceoraddress,采用jenki