Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
原因:没有引入commons的maven坐标,这个是必须的必!!
不引入这个maven坐标启动不报错,但是上传就有问题了
<!--添加fileupload依赖-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
ssm上传案例:
第一步springmvc配置文件注册
<!--4 文件上传配置-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"/>
<!--最大上传大小:单位是1字节-->
<property name="maxUploadSize" value="10485760"/>
<property name="maxInMemorySize" value="40960"/>
</bean>
第二步,controller案例代码
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@RestController
public class FileController {
@RequestMapping("/upFile")
public String upFile(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
//设置文件保存路径
String path = request.getServletContext().getRealPath("/upload");
System.out.println("path:" + path);
File realPath = new File(path);
if (!realPath.exists()) {
realPath.mkdir();
}
System.out.println("上传的文件地址:" + realPath);
file.transferTo(new File(realPath + "/" + file.getOriginalFilename()));
return "localhost:8080/upload/"+file.getOriginalFilename();
}
}