springboot上传图片加跨域头配置(萌新版本,研究半天才知道咋用),为了防止自己遗忘记录下

首先搭建springboot框架这个就不多说了。不会的小伙伴们,下面附上大佬的博客地址

https://blog.csdn.net/Winter_chen001/article/details/81204116

好了。接下来写如何附上项目结构

废话不多说附上源码

CorsConfig 类

package com.linmutech.demo.common;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用
        corsConfiguration.addAllowedHeader("*"); // 允许任何头
        corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等)
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 对接口配置跨域设置
        return new CorsFilter(source);
    }
}

PageConstant 类

package com.linmutech.demo.common;

import java.io.File;

/***
 * 常量类
 * */
public class PageConstant {
    //服务器图片存储路径
    public static final String FILE_PATH = "E:"+File.separator+"demo"+File.separator+"File";
}

UploadUtils 类

package com.linmutech.demo.common;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/****
 * 上传工具类
 * */
public class UploadUtils {
    public  static String uploadFile(MultipartFile file) throws IOException {
        //图片保存到服务器
        //1获取服务器路径
        String filePath=PageConstant.FILE_PATH;
        //2.获取上传文件名
        String fileName=file.getOriginalFilename();

        //拼接文件名
        String tupian= getUUID() +fileName.toString();
        //判断路径是否存在
        File imgFile=new File(filePath);
        if (!imgFile.exists()){
            imgFile.mkdirs();
        }
        //4.保存文件 把file文件通过transferTo(path)方法转储到到path中
        file.transferTo(new File(filePath+File.separator + tupian));
        return tupian.toString();
    }

    public static String getFileName(MultipartFile file){
        String fileName=file.getOriginalFilename();
        return getUUID() + fileName;
    }


    //uuid生成新的名字
    public static String getUUID(){
        return UUID.randomUUID().toString().replace("-", "");
    }


}

uploadController类

package com.linmutech.demo.controller;

import com.linmutech.demo.common.UploadUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Map;


@Controller
@RequestMapping("/uploads")
class uploadController {
    private static final Logger log = LoggerFactory.getLogger(uploadController.class);

    @PostMapping("/printuploadl")
    @ResponseBody
    public String printuploadl(@RequestParam(value = "fileName") MultipartFile file, HttpServletRequest request, Model model) throws IOException {
        String fileName = UploadUtils.uploadFile(file);

        return fileName;
    }
}

application.properties 的内容

# 禁用 thymeleaf 缓存
spring.thymeleaf.cache=false
# 是否支持批量上传   (默认值 true)
spring.servlet.multipart.enabled=true
# 上传文件的临时目录 (一般情况下不用特意修改)
spring.servlet.multipart.location=
# 上传文件最大为 1M (默认值 1M 根据自身业务自行控制即可)
spring.servlet.multipart.max-file-size=1048576
# 上传请求最大为 10M(默认值10M 根据自身业务自行控制即可)
spring.servlet.multipart.max-request-size=10485760
# 文件大小阈值,当大于这个阈值时将写入到磁盘,否则存在内存中,(默认值0 一般情况下不用特意修改)
spring.servlet.multipart.file-size-threshold=0
# 判断是否要延迟解析文件(相当于懒加载,一般情况下不用特意修改)
spring.servlet.multipart.resolve-lazily=false

还有maven依赖包

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.linmutech</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

以上就是上传的内容,其实很多类的内容可以写到一起的。但由于我之后还要加一些操作,这样比较容易区分

对于上传我也是一知半解,反正,大概思路就是,先保存到服务器某个文件夹内,然后返回名字,存到数据库,然后查询的时候前端就链接+名字就可以读取了

猜你喜欢

转载自blog.csdn.net/qq_28981541/article/details/81335512