springboot文件上传遇到的问题

看狂神老师的web以及springmvc学习了文件上传,今天打算在springboot上实现,却遇到了以下问题:

 Failed to convert value of type 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile' to required type 'org.springframework.web.multipart.commons.CommonsMultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile' to required type 'org.springframework.web.multipart.commons.CommonsMultipartFile'

在我的理解就是StandardMultipartFile不能转为CommonsMultipartFile,因为在mvc中使用的就是

@RequestParam("file") CommonsMultipartFile file,以为在springboot中也有用,测试结果不能,要使用
@RequestParam("file") MultipartFile file

我还在配置文件中添加了配置

#enabled默认为true,既允许附件上传。
spring.servlet.multipart.enabled=true
#配置上传文件的大小
#max-file-size指定了单个文件的最大长度  max-request-size属性说明单次HTTP请求上传的最大长度
spring.servlet.multipart.max-file-size=1000MB
spring.servlet.multipart.max-request-size=2000MB

文件上传成功了。

完整代码如下:

<div class="panel-body">
     <form action="/upload" enctype="multipart/form-data" method="post">
        <p><input type="file" name="file"></p>
         <input type="submit" value="上传">
      </form>
</div>
@Controller
public class FileUtil {
    @RequestMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request
    , Model model) throws IOException {
        String msg="";
        //获取文件的名字
        String uploadFileName = file.getOriginalFilename();
        //判断
        if (uploadFileName.equals("")){
            return "redirect:/toIndex";
        }
        System.out.println("上传文件的名字: "+uploadFileName);
        //保存位置
        String path="E://shop//upload";
        //String path = request.getServletContext().getRealPath("/upload");
        //如果不存在就创建一个
        File realPath=new File(path);
        if (!realPath.exists()){
            realPath.mkdir();
        }
        System.out.println("上传文件的保存地址: "+realPath);
        //文件传输
        InputStream is=file.getInputStream();
        OutputStream os=new FileOutputStream(new File(realPath,uploadFileName));
        int len;
        byte[] buff=new byte[1024];
        while ((len=is.read(buff))!=-1){
            os.write(buff,0,len);
            os.flush();
        }
        is.close();
        os.close();
        return "redirect:/blankPage";
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值