下面是报错内容
org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.multipart.MultipartFile]: Specified class is an interface
直接看Controller类:
package com.tjcu.controller;
import org.apache.commons.io.FilenameUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Controller
@RequestMapping("file")
public class FileController {
@RequestMapping("upload")
public String fileUpload(MultipartFile upload, HttpServletRequest request) throws IOException {
//获取原文件名
String originalFilename = upload.getOriginalFilename();
//上传文件的类型
String contentType = upload.getContentType();
//上传文件的大小
long size = upload.getSize();
System.out.println(originalFilename);
System.out.println(contentType);
System.out.println(size);
//提取文件后缀名
String extension = FilenameUtils.getExtension(upload.getOriginalFilename());
String newFileName = UUID.randomUUID().toString().replace("-","")+"."+extension;
System.out.println(newFileName);
//调用业务 文件拷贝 将接收的文件放upload里
String realPath = request.getSession().getServletContext().getRealPath("/upload");
upload.transferTo(new File(realPath+"/"+newFileName));
return "index";
}
}
解决方法:
在MultipartFile 前面加上@RequestParam
package com.tjcu.controller;
import org.apache.commons.io.FilenameUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Controller
@RequestMapping("file")
public class FileController {
@RequestMapping("upload")
public String fileUpload(@RequestParam MultipartFile upload, HttpServletRequest request) throws IOException {
//获取原文件名
String originalFilename = upload.getOriginalFilename();
//上传文件的类型
String contentType = upload.getContentType();
//上传文件的大小
long size = upload.getSize();
System.out.println(originalFilename);
System.out.println(contentType);
System.out.println(size);
//提取文件后缀名
String extension = FilenameUtils.getExtension(upload.getOriginalFilename());
String newFileName = UUID.randomUUID().toString().replace("-","")+"."+extension;
System.out.println(newFileName);
//调用业务 文件拷贝 将接收的文件放upload里
String realPath = request.getSession().getServletContext().getRealPath("/upload");
upload.transferTo(new File(realPath+"/"+newFileName));
return "index";
}
}
直接传入MultipartFile,springmvc不能自动映射 上传文件到指定的参数中
@RequestParam 用于将指定的请求参数赋值给形参



