SpringBoot上传图片,图片不能及时显示问题

上传图片

1、在yaml配置文件中设置图片的上传路径

#图片上传的位置
img:
  location: D:/upload/

2、控制类编写

package com.qykhhr.societywebsite.controller;
import com.qykhhr.societywebsite.entity.Article;
import com.qykhhr.societywebsite.entity.FileInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@Slf4j
@Controller
@RequestMapping("/blog")
public class BlogController {
    
    
    /**
     * 配置文件中配置文件保存的路径
     */
    @Value("${img.location}")
    private String folder;
    
    /**
     * 图片的上传
     * @param request
     * @param file
     * @return
     * @throws IOException
     */
    @PostMapping("/imgUpload")
    @ResponseBody
    public FileInfo imageUpload(HttpServletRequest request, @RequestParam(value = "editormd-image-file", required = false) MultipartFile file) throws IOException {
    
    
        if(!file.isEmpty()){
    
    
            String filename = file.getOriginalFilename();//获取文件名
            file.transferTo(new File(folder + filename ));
            //http://localhost:8080
            String basePath = request.getScheme()//获取协议号
                    + "://"
                    + request.getServerName()//获取IP地址
                    + ":"
                    + request.getServerPort()//获取端口号
                    + request.getContextPath();//获取工程路径
            return new FileInfo(1, "上传成功", basePath+"/upload/"+filename);
        }
        return null;
    }
}

3、配置类编写

将D:\upload下的文件映射到当前项目/upload/下

package com.qykhhr.societywebsite.config;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class UploadConfig extends WebMvcConfigurerAdapter {
    
    
    /**
     * 将D:\\upload下的文件映射到当前项目/upload/下
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
    
        //addResourceHandler()里配置需要映射的文件夹,此处代表映射文件夹user下的所有资源。
        //addResourceLocations()配置文件夹在系统中的路径,使用绝对路径,格式为“file:你的路径”
        registry.addResourceHandler("/upload/**").addResourceLocations("file:D:\\upload\\");
    }
}

4、运行效果
可以访问http://localhost:8080/upload/1.jpg看到图片
在这里插入图片描述

但是图片的真实路径却在D:\upload,并且项目中都没有upload这个文件夹
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46070108/article/details/116495116
今日推荐