【项目留坑】 图片上传
# 上传文件的路径,根据情况部署,自行修改
file.upload.dir=F:/imooc-mall-images/
# 文件名称支持的后缀集合
file.suffixList=.jpg,.png,.gif,.jpeg
/**
     * 上传图片
     * @param httpServletRequest
     * @param file
     * @return
     */
    @PostMapping("/admin/upload/file")
    public R uploadImage(HttpServletRequest httpServletRequest, @RequestParam("file") MultipartFile file) {
        // 获取图片的原文件名
        String originalFilename = file.getOriginalFilename();
        // 获取图片类型后缀
        String suffixName = FileUtils.getSuffix(originalFilename);
        // 不包含规定的后缀名则直接抛出异常
        List<String> strings = Arrays.asList(suffix.split(","));
        if (!strings.contains(suffixName)) {
            throw new ImoocMallException(ImoocMallExceptionEnum.PHOTO_NAME_ILLEGAL);
        }
        // 生成图片的UUID+后缀,即新的文件名
        String newFileName = FileUtils.getFileName(originalFilename);
        // 创建文件夹
        File fileDirectory = new File(Constant.FILE_UPLOAD_DIR);
        // 创建目标图片
        File destFile = new File(Constant.FILE_UPLOAD_DIR + newFileName);
        // 判断文件夹是否存在
        if (!fileDirectory.exists()) {
            // 尝试新建文件夹【fileDirectory.mkdir()会新建一个文件夹】
            if (!fileDirectory.mkdir()) {
                // 文件夹创建失败:比如权限不够
                throw new ImoocMallException(ImoocMallExceptionEnum.MKDIR_FAILED);
            }
        }
        // 文件夹有了,现在上传图片
        try {
            // 把传入的图片写入到destFile中(把请求中的文件放入到本地目录文件夹中)
            file.transferTo(destFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            // 把图片地址返回出去(此时要静态资源映射)
            return R.success(getHost(new URI(httpServletRequest.getRequestURL() + "")) + "/images/"
                    + newFileName);
        } catch (URISyntaxException e) {
            return R.error(ImoocMallExceptionEnum.PHOTO_UPLOAD_FAILED);
        }
    }
    // 获取当前ip和端口号
    private URI getHost(URI uri) {
        URI effectiveURI;
        try {
            effectiveURI = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(),
                    null, null, null);
        } catch (URISyntaxException e) {
            effectiveURI = null;
        }
        return effectiveURI;
    }
静态资源映射:静态资源到本地目录的映射
package com.kyk.imoocmall.config;
import com.kyk.imoocmall.common.Constant;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * 描述:配置地址映射
 */
@Configuration
public class ImoocMallWebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**")
                .addResourceLocations("file:" + Constant.FILE_UPLOAD_DIR);
    }
}
https://blog.csdn.net/xiaochen_2715/article/details/125450681

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号