下面是文件接收的方法,其中List<FileItem> items為空,獲取不到上傳文件。
@RequestMapping(value = "/imagedetect", method = { RequestMethod.POST})
@ResponseBody
public Object imagedetect(ModelMap model, HttpServletResponse response) throws IOException {
logger.info("檢測任務開始====" + DateUtil.getCurrentTime());
HttpServletRequest request=CommonUtil.getRequest();
String access_token = request.getParameter("access_token");
String url = request.getParameter("image");
String tag = request.getParameter("tag");
Object obj = new Object();
//判斷該請求是否有上傳文件
if(ServletFileUpload.isMultipartContent(request))
{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> items = upload.parseRequest(request);
for(FileItem item: items)
{
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}else{
}
}
經過查找資料,分析后,發現在springmvc的配置文件中有這樣一段代碼:
|
1
2
3
4
5
|
<bean id=
"multipartResolver"
class
=
"org.springframework.web.multipart.commons.CommonsMultipartResolver"
>
<property name=
"defaultEncoding"
value=
"UTF-8"
/>
<property name=
"maxUploadSize"
value=
"104857600"
/>
<property name=
"maxInMemorySize"
value=
"4096"
/>
</bean>
|
這兩種分別是兩種上傳文件的設置方式,但是不能同時使用。切記。
把這個配置刪除測試發現問題解決。
如果你想使用springmvc的文件上傳方式,只需要后台接收的方法這么寫:
|
1
2
3
4
5
6
7
8
|
@RequestMapping
(value =
"imagedetectufile"
, method = { RequestMethod.POST })
@ResponseBody
public
Object detectPictureTask(
@RequestParam
(value =
"image"
, required =
false
) MultipartFile file[],
ModelMap model, HttpServletResponse response)
throws
IOException {
//業務邏輯。。。
//............
}
|
親測好使。
