在網上搜了一下,找到很多代碼都是使用推薦使用
採用spring提供的上傳文件的方法
org.springframework.web.multipart.commons.CommonsMultipartResolver
賦值了一下代碼直接使用
但是發現出現
Java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade
cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
就是在強制轉換這裏報錯
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)getRequest();
最後改爲
MultipartHttpServletRequest multiRequest = multipartResolver.resolveMultipart(getRequest());
並刪除配置文件
<!-- <bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<value>32505856</value>上傳文件大小限制爲31M,31*1024*1024
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean> -->
獲取文件成功
記錄一下完整的controller:
@RequestMapping(value="/{token}",method=RequestMethod.POST)
@ResponseBody
public void upload() throws IllegalStateException, IOException {
//創建一個通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(getRequest().getSession().getServletContext());
//判斷 request 是否有文件上傳,即多部分請求
if(multipartResolver.isMultipart(getRequest())){
//轉換成多部分request
/*MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)getRequest();*/
MultipartHttpServletRequest multiRequest = multipartResolver.resolveMultipart(getRequest());
//取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
//記錄上傳過程起始時的時間,用來計算上傳時間
int pre = (int) System.currentTimeMillis();
//取得上傳文件
MultipartFile file = multiRequest.getFile(iter.next());
if(file != null){
//取得當前上傳文件的文件名稱
String myFileName = file.getOriginalFilename();
//如果名稱不爲“”,說明該文件存在,否則說明該文件不存在
if(myFileName.trim() !=""){
System.out.println(myFileName);
//重命名上傳後的文件名
String fileName = "demoUpload" + file.getOriginalFilename();
//定義上傳路徑
String path = "D:/upload" + fileName;
File localFile = new File(path);
file.transferTo(localFile);
}
}
//記錄上傳該文件後的時間
int finaltime = (int) System.currentTimeMillis();
System.out.println(finaltime - pre);
}
}
}
完整的jsp
<body>
<h1>springMVC包裝類上傳文件</h1>
<form name="formUpload" action="days/${token }" enctype="multipart/form-data" method="post" id="test">
<div id="newUpload2">
<input type="file" name="file">
</div>
<input type="text" name="test" >
<input type="submit" value="上傳" >
</form>
</body>