SpringBootアップロード画像とアクセス

SpringBootアップロード画像とアクセス

カスタムマッピングパス

package com.example.demo.Interceptor;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class ImgHandlerConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //文件磁盘图片url 映射
        //配置server虚拟路径,handler为前台访问的目录,locations为files相对应的本地路径
        registry.addResourceHandler("/imgs/**").addResourceLocations("classpath:/imgs/");
    }
}

アップロードインターフェース

IMGSは絵のクラスパスフォルダ内のファイル。このフォルダがないと自動的に作成されます。

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileNotFoundException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Controller
@RequestMapping("upload")
public class UploadController {

    /**
     *上传图片接口
     */
    @PostMapping("uploadImg")
    @ResponseBody
    public String uploadFile(@RequestParam("fileName") MultipartFile file, HttpServletRequest request) throws FileNotFoundException {
        //判断文件是否为空
        if (file.isEmpty()) {
            return "上传文件不可为空";
        }

        // 获取文件名
        String fileName = file.getOriginalFilename();
        fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) +fileName;

        //放到类路径下的imgs文件夹中
        String classpath = ResourceUtils.getFile("classpath:").getAbsolutePath();
        String relativePath="/imgs/"+fileName;
        String path=classpath+relativePath;

        //创建文件路径
        File dest = new File(path);
        //判断文件是否已经存在
        if (dest.exists()) {
            return "文件已经存在";
        }
        //判断文件父目录是否存在
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdir();
        }
        try {
            //上传文件//保存文件
            file.transferTo(dest);
        } catch (Exception e) {
            return "上传失败";
        }
        //服务器路径
        String serverUrl=request.getRequestURL().toString().replace(request.getRequestURI(),"");
        return serverUrl+relativePath;
    }
}

アップロード写真の後に直接アクセスインタフェースのリターンパス。
springbootのデフォルトのアップロードは1メガバイトまでのファイル。YMLは、コンフィギュレーション・ファイルが変更されて変更することができます。

spring:
  servlet:
    multipart:
      max-file-size: 20MB
      max-request-size: 20MB
公開された17元の記事 ウォンの賞賛1 ビュー309

おすすめ

転載: blog.csdn.net/weixin_43424932/article/details/104040917