关于springBoot文件上传功能

先写一个config类解决本地路径访问不到问题

@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //和页面有关的静态目录都放在项目的static目录下
      //  registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        //上传的图片在D盘下的OTA目录下,访问路径如:http://localhost:8081/OTA/d3cf0281-bb7f-40e0-ab77-406db95ccf2c.jpg
        //其中OTA表示访问的前缀。"file:D:/OTA/"是文件真实的存储路径
        registry.addResourceHandler("/imgs1/**").addResourceLocations("file:d:/Users/ZY192898/Desktop/aaa/");
        registry.addResourceHandler("/imgs2/**").addResourceLocations("file:d:/Users/ZY192898/Desktop/");
    }
}

前端:

<form class="inpform" id="uploadForm" enctype="multipart/form-data">
    <input type="file" id="avatar" name="avatar">
    <button type="button">上传</button>
</form>
<script>
    $.ready()
    {
        $("button").click(function () {
            var formData = new FormData($("#uploadForm")[0]);
            console.log(formData);
            $.ajax({
                url: '/freemarker/upload',
                type: 'POST',
                data: formData,
                cache: false,
                processData: false,
                contentType: false,
                success:function(msg){
                        var txt2 = $("<img id=aa>");
                    $("body").after(txt2);
                    $("#aa").attr("src","/imgs2/"+msg);
                }
            });
        });
    }
</script>

Controller类:

@RequestMapping(value = "/upload")
    @ResponseBody
    public String upload(@RequestParam(value = "avatar", required = false) MultipartFile file) throws Exception {
        String fileName = file.getOriginalFilename();

            String newFileName=fileName.split("\\.")[0];
            //String suffixName = fileName.substring(fileName.lastIndexOf("."));
            //SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
            //Random r = new Random();r.nextInt(100)
            System.out.println(newFileName);
        File f = new File("d:\\Users\\Desktop\\"+newFileName+".png");
        if (!f.exists()) {
            f.createNewFile();
        }
        FileInputStream in =(FileInputStream) file.getInputStream();
        FileOutputStream out = new FileOutputStream(f);// 指定要写入的图片
        int n = 0;// 每次读取的字节长度
        byte[] bb = new byte[1024];// 存储每次读取的内容
        while ((n = in.read(bb)) != -1) {
            out.write(bb, 0, n);// 将读取的内容,写入到输出流当中
        }
        //执行完以上后,磁盘下的该文件才完整,大小是实际大小
        out.close();// 关闭输入输出流
        in.close();
        return f.getName();
    }

application文件配置文件传输大小:

spring.servlet.multipart.max-file-size=5MB
spring.servlet.multipart.max-request-size=10MB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值