SpringBoot文件上传配置及上传Ali OSS

SpringBoot文件上传配置,从微信拉取临时图片, 上传阿里OSS地址

引入OSS包

        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.8.0</version>
        </dependency>

设置虚拟路径,访问绝对路径下资源

@Configuration
public class WebMvcConf implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry){
        String os = System.getProperty("os.name");
        if (os.toLowerCase().startsWith("win")){ //windows
            registry.addResourceHandler("/usr/data/upload/**").addResourceLocations("file:" + "D:/root/upload/");
        }
        else {
            registry.addResourceHandler("/usr/data/upload/**").addResourceLocations("file:/root/upload/");
        }
    }

    public String upload(MultipartFile file){
        try {
            //创建OSSClient实例
            OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECERET);
            //上传文件流
            InputStream inputStream = file.getInputStream();
            String fileName = file.getOriginalFilename();
            //String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            //fileName = uuid + name.substring(name.lastIndexOf(".")); // .png
            ossClient.putObject(BUCKT_NAME, fileName, inputStream);
            ossClient.shutdown();
            return "https://" + BUCKT_NAME + "." + ENDPOINT + "/" + file.getOriginalFilename();
        }catch (Exception e){
            return null;
        }
    }

Configuration配置

@Configuration
public class FileUploadConfig {

    @Bean
    public MultipartConfigElement getMultipartConfig(){
        MultipartConfigFactory multipart = new MultipartConfigFactory();
        multipart.setFileSizeThreshold(DataSize.of(512, DataUnit.KILOBYTES));
        multipart.setMaxFileSize(DataSize.of(4, DataUnit.MEGABYTES));
        multipart.setMaxRequestSize(DataSize.of(10, DataUnit.MEGABYTES));
        multipart.setLocation("/tmp/upload/");
        return multipart.createMultipartConfig();
    }

其他

将 MultipartFile 转换为 File 文件

    public File multipartFileToFile(MultipartFile multipartFile) {
        if(multipartFile == null || multipartFile.getSize() < 1)
            return null;
        try{
            String fileName = String.valueOf(multipartFile.getOriginalFilename());
            String prefix = String.valueOf(System.currentTimeMillis());
            String suffix = fileName.substring(fileName.lastIndexOf(Misc.DOT));
            File file = File.createTempFile(prefix, suffix);
            if(file.exists())
                file.deleteOnExit();
            logger.info("name:{}, path:{}", file.getName(), file.getAbsolutePath());
            return file;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

参考资料

Spring Boot上传文件设置绝对路径和访问绝对路径下的静态资源
https://blog.csdn.net/superlover_/article/details/80893007

https://www.cnblogs.com/baizhanshi/p/5593431.html

MultipartFile转换为File文件,都有哪些方法
https://www.bilibili.com/read/cv6753499

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值