您现在的位置是:首页 > java技术交流java技术交流
springboot本地图片上传-上传图片到本地磁盘目录
上善若水2020-12-10 15:30:10【java技术交流】 2802人已围观
简介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 -
搜狗输入法“618红包广告”怎么关闭 搜狗弹窗关闭
618就要到了,国产软件又一次次耍起流氓起来,各种弹窗层出不穷,搜狗输入法也打起了用户是小心思,通过右下角托盘,强制推广618天猫广告,这还是用户数量庞大的软件,为了利益耍起流氓.目前环境下电脑中毒事 -
18个抖音笑话段子,看完已合不拢嘴!
1、为什么马路上车和人都要靠右走?因为,菩萨保佑。 2、天冷了,如果你不能给我一个拥抱,请给我买一件外套,我穿XL号。 3、谁能想到貌不惊人的我,竟然是龙的传人? 4、希望我能成为一个有趣和有钱的人,实在不行,光有钱也是可以的。 5、你和你对象一个月能赚多少钱?我一万, 加上女票的 ,一共两千。 6、只要你跟着我,我吃肉就绝对不会让你喝汤,汤也是我的。 7、“大街上人来人往,却都只是擦肩而过...”“咋了,你还要迎面撞一下?”——论怎样打击小清新 8、据说,你害怕时喊出的人名就是你最爱的人,那么问题来了