1、
SpringMVC的配置文件中一定要有文件配置:
<!-- 当使用文件上传时,需要打开该注释,需要扫描包 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="2048000000"></property>
</bean>
2、前台JSP的代码;
//注意引入JQuery.js文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<script src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
function UUploadedFile() {
var formData = new FormData();
formData.append('file', $('#UUploadedFile')[0].files[0]);
$.ajax({
async: false,//要求同步 不是不需看你的需求
url : "${ctxPath }material/TestuploadFile.do",
type : 'POST',
data : formData,
dataType: "json",
processData : false, //必须false才会避开jQuery对 formdata 的默认处理
contentType : false, //必须false才会自动加上正确的Content-Type
success: function (data) {
if (data.success ) {
alert("上传完成!");
}else{
alert("上传失败!");
}
},
});
}
</script>
<body>
<input type="file" id="UUploadedFile" name="fileupload" onchange="UUploadedFile()">
</body>
</html>
3、后端的Controller接收请求的代码:
引用
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
@RequestMapping(value = "/TestuploadFile.do")
@ResponseBody
public Map<String, Object> TestuploadFile(HttpServletRequest request){
Map<String, Object> modelMap=new HashMap<String, Object>();
try {
MultipartHttpServletRequest mpRequest = (MultipartHttpServletRequest) request;
MultipartFile file = mpRequest.getFile("file");
long fileSize = file.getSize();//获取文件大小
if (fileSize <= 0) {
modelMap.put(SUCCESS, false);
modelMap.put(MESSAGE, "上传失败!上传的文件为空!");
return modelMap;
}
if (fileSize > 200 * 1024 * 1024) {
//限制上传文件大小为200M
modelMap.put(SUCCESS, false);
modelMap.put(MESSAGE, "上传失败!上传的文件大小超出了限制!");
return modelMap;
}
InputStream in = file.getInputStream();//读取上传的文件流
OutputStream out = new FileOutputStream("D:/"+file.getOriginalFilename());
File outFile=new File("D:/"+file.getOriginalFilename());//把文件输出到D盘下
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
in.close();
out.close();
if(outFile.exists()){
//判断文件是否存在
modelMap.put(SUCCESS, true);
modelMap.put(MESSAGE, "上传完成!");
}else {
modelMap.put(SUCCESS, false);
modelMap.put(MESSAGE, "上传失败!");
return modelMap;
}
} catch (IOException e) {
modelMap.put(SUCCESS, false);
modelMap.put(MESSAGE, "上传失败!");
return modelMap;
}
return modelMap;
}