提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

简单的文件上传
使用springboot


提示:以下是本篇文章正文内容,下面案例可供参考

一、配置文件配置文件路径

在这里插入图片描述

#上传文件的路径,根据实际情况,自行修改
file.upload.dir=E:/zullfiletest/
file.upload.ip=127.0.0.1
file.upload.port=8083

二、编写文件上传controller

在这里插入图片描述

@PostMapping("/admin/upload/file")
    public ApiRestResponse upload(HttpServletRequest httpServletRequest,
            @RequestParam("file") MultipartFile file) {
        //得到文件名称
        String fileName = file.getOriginalFilename();
        //获取文件后缀
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        //生成文件名称UUID
        UUID uuid = UUID.randomUUID();
        //uuid + 文件前缀组成新的文件名
        String newFileName = uuid.toString() + suffixName;
        //根据配置文件中的路径创建文件对象(该对象意义是文件存放的路径)
        File fileDirectory = new File(ProductConstant.FILE_UPLOAD_DIR);
        //创建目标文件
        File destFile = new File(ProductConstant.FILE_UPLOAD_DIR + newFileName);

        //如果文件目录不存在 创建该文件目录 若创建失败 抛出异常
        if (!fileDirectory.exists()) {
            if (!fileDirectory.mkdir()) {
                throw new ImoocMallException(ImoocMallExceptionEnum.MKDIR_FAILED);
            }
        }
        try {
            //把内存中图片写入磁盘
            file.transferTo(destFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            return ApiRestResponse
                    .success(getHost(new URI(httpServletRequest.getRequestURL() + "")) + "/category-product/images/"
                            + newFileName);
        } catch (URISyntaxException e) {
            return ApiRestResponse.error(ImoocMallExceptionEnum.UPLOAD_FAILED);
        }
    }

    /**              mvc中的资源映射代码如下
     *                  registry.addResourceHandler("/images/**")
     *                 .addResourceLocations("file:" + ProductConstant.FILE_UPLOAD_DIR);
     * @param uri
     * @return
     */

    private URI getHost(URI uri) {
        URI effectiveURI;
        try {
            effectiveURI = new URI(uri.getScheme(), uri.getUserInfo(), ip, port,
                    null, null, null);
        } catch (URISyntaxException e) {
            effectiveURI = null;
        }
        return effectiveURI;
    }
    

三、编写Mvc映射配置(直接把你本地访问文件路径连接暴露可能被黑客攻击)

在这里插入图片描述

import com.imooc.cloud.mall.practice.categoryproduct.common.ProductConstant;
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:" + ProductConstant.FILE_UPLOAD_DIR);
//        registry.addResourceHandler("swagger-ui.html").addResourceLocations(
//                "classpath:/META-INF/resources/");
//        registry.addResourceHandler("/webjars/**").addResourceLocations(
//                "classpath:/META-INF/resources/webjars/");
    }
}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐