文档章节

SpringBoot上传图片操作

_liucui_
 _liucui_
发布于 01/16 18:47
字数 309
阅读 34
收藏 0

    首先有个上传文件的工具类

/**
 * 文件上传
 * @param file
 * @param filePath
 * @param fileName
 * @throws Exception
 */
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
    File targetFile = new File(filePath);
    if(!targetFile.exists()){
        targetFile.mkdirs();
    }
    FileOutputStream out = new FileOutputStream(filePath+File.separator+fileName);
    out.write(file);
    out.flush();
    out.close();
}

 

2. 配置真实路径与虚拟路径的映射关系

public class TestApplication extends WebMvcConfigurerAdapter {


    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }


    @Value("${upload.filePath}")
    private String filePath;


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry){
        registry.addResourceHandler("/");
        registry.addResourceHandler("/images/**").addResourceLocations("file:"+filePath);
        super.addResourceHandlers(registry);
    }

}

 3. 上传的主要方法实现

@PostMapping("/test/common/uploadFile")
    public String uploadFile(
                    @RequestParam("file") MultipartFile file, HttpServletRequest request) {

        try {
               //定义相对路径
            String relativePath = File.separator+DateUtil.getToday()+File.separator;
            String path = filePath + relativePath;
            String fileName = file.getOriginalFilename();
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            String suffix = fileName.substring(fileName.lastIndexOf("."));


               //随机生成新的文件名,防止文件名冲突或者中文乱码问题
            String newFileName = uuid+suffix;

               //调用上传方法将文件上传到物理路径下
            FileUtil.uploadFile(file.getBytes(),path,newFileName);


            //可选:将图片路径存储起来为了定期清理图片(可以存储到非关系型数据库中,如mongodb)
            PicturePathDTO dto = new PicturePathDTO();
            dto.setPath(images+relativePath+newFileName);
            dto.setCreateTime(new Date());
            picturePathDao.save(dto);


            //返回虚拟路径
            return (images+relativePath+newFileName);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

© 著作权归作者所有

共有 人打赏支持
_liucui_
粉丝 17
博文 137
码字总数 54045
作品 0
秦皇岛
私信 提问
上传部署SpringBoot项目(Maven)到服务器

现在使用SpringBoot的架构的很显然是越来越受人们的欢迎 ,关于如何搭建SpringBoot项目我在前面也有说到.但是也有很多人在使用了SpringBoot后发现打包上传到服务器上出现了很多问题.为什么不能...

coderzs
2017/11/29
0
0
springboot打成jar包后配置外部资源映射成静态资源

很多的项目都要上传图片那些,然后通过打包jar包或者war包发布到服务器上,我们不可能把上传图片的文件夹放在jar包或者war包里面,那样会越来越大。所以有了下面的配置,其他框架都好说可以把...

duangecho
2018/05/09
0
0
关于springboot jar重启后找不到上传的图片的问题

@汪云飞 你好,想跟你请教个问题:我最近一直在看您编著的SpringBoot实战这本书,我在学习的时候发现了个问题,当我用jar命令运行一个springboot程序后上传了个图片文件,当我重新使用jar命令...

JohnConnor
2017/02/08
640
4
补习系列-springboot mime类型处理

目标 了解http常见的mime类型定义; 如何使用springboot 处理json请求及响应; 如何使用springboot 处理 xml请求及响应; http参数的获取及文件上传下载; 如何获得原始请求的字节流; 6.了解...

美码师
2018/07/17
0
0
SpringBootBucket 2.0.4 发布,代号“傲娇的小二晶”

SpringBootBucket 自从1.0.0版本发布后就有好多人喜欢,目前码云上面star数量接近1.2k。上个月还收到了红薯签名的1000 star奖杯,这个我自己也觉得很惊讶。 由于SpringBoot 1.x官方将终止维护...

一刀
2018/09/16
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 入门教程9、服务限流/API限流(Zuul+RateLimiter)

一、前言 1、什么是RateLimiter、Spring Cloud Zuul RateLimiter? RateLimiter是Google开源的实现了令牌桶算法的限流工具(速率限制器)。http://ifeve.com/guava-ratelimiter/ Spring Clou...

吴伟祥
28分钟前
0
0
win10多人同时远程桌面连接 教程

win10多人同时远程桌面连接 教程 1 新建用户 右键“此电脑”->管理->本地用户和组 右键“用户”->新用户 点击【创建】按钮,即可完成用户创建。 2 添加远程桌面用户 右键“此电脑”->属性->远...

linjin200
39分钟前
2
0
本地运行Kmeans算法

参考资料链接:https://github.com/CraigCovey/spark-examples/blob/f8182a6736fd5293dfa03b023eb1423363ba6041/spark-1_6/scala/clustering/kmeans/kmeans_clustering_main.scala packag......

KYO4321
39分钟前
0
0
超长干货 | Kubernetes命名空间详解

K8s使用命名空间的概念帮助解决集群中在管理对象时的复杂性问题。在本文中,会讨论命名空间的工作原理,介绍常用实例,并分享如何使用命名空间来管理K8s对象。最后,介绍名为projects的Ranch...

RancherLabs
42分钟前
0
0
Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (4)

下载Essential Studio for Xamarin最新版本 Essential Studio for Xamarin是全面的Xamarin.iOS、Xamarin.Android和Xamarin.Forms组件套包,包含最快的图表和网格。 分段控制不定开关 在进一步...

电池盒
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部