您现在的位置是:首页 > java技术交流java技术交流
springboot本地图片上传-上传图片到本地磁盘目录
上善若水2020-12-10 15:30:10【java技术交流】 2950人已围观
简介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)
随机图文
-
php技术提升心得与方法
现在的PHP市场虽然充斥了大量的的PHP开发人员,但这些人当中真正能称得上高手的却寥寥无几。很多公司虽然招聘了一些PHP开发人员,但是由于技术水平不高,导致公司的项目一直堆积。这不仅另公司无奈也让已经入职的PHP开发人员着急,他们也想要在PHP领域更近一步,但却苦于找不到提高自己的方法,下面我们的鸥仔收集了一些PHP大神的一些工作方式、习惯,让大家看看PHP大神们是如何工作,也希望这些方法能帮助到那些想要在PHP领域更近一步的人。 -
docker 部署thinkphp6 项目(strawberry) 基于官方镜像php nginx mysql部署
使用docker部署thinkphp6项目,这里采用php7.4+mysql5.7+nginx进行,每个服务为单独的一个容器,本人电脑不是专业版,采用centos虚拟机来运行docker,而非win -
这些哭笑不得的冷笑话,你被哪个逗笑?
1.皮卡丘去找喷火龙借钱,喷火龙不借让他去找杰尼龟,然后杰尼龟说:不借,你是不是以为我只会说杰尼杰尼? 2.我对象说今年过年回家看我父母 象说:不了 3.阿基米德说:给我一个支点,我能用杠杆撬动整个地球! 投资机构:这个三倍杠杆拿去不谢。 第二天,阿基米德发现自己亏了2个地球! 4.“我以前也不懂事,后来被人打了一顿。” “就变懂事了?” “还是不懂事,但不敢嚣张了。” 5.下水 -
ThinkPHP6.0 获取器
获取器的作用是对模型实例的(原始)数据做出自动处理。一个获取器对应模型的一个特殊方法(该方法必须为public类型),方法命名规范为:getFieldNameAttrFieldName为数据表字段的驼