Dha*_*esh 2 java jquery jstl spring-mvc
我有一个简单的表单,可以选择上传图片,但上传文件,我没有使用此方法
<form:input path="logoData" id="image" type="file" />
Run Code Online (Sandbox Code Playgroud)
相反,我使用的是ajax upload jquery pulgin.问题是upload.parseRequest(request)在下面的代码中返回null:
@RequestMapping(value = "/upload.htm", method = RequestMethod.POST)
public @ResponseBody String upload(HttpServletRequest request) throws FileUploadException{
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List<FileItem> items = upload.parseRequest(request);
System.out.println("====ITEMS====" + items.size());
System.out.println("----REQUEST---" +request.getParameter("uploadImg"));
System.out.println("-----SIZE----" +request.getParameterMap().size());
Map<String, String> map = request.getParameterMap();
for(Map.Entry<String, String> entry : map.entrySet()){
System.out.println("----KEY---" + entry.getKey() + "----value---" + entry.getValue());
}
// Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
System.out.println("----IS MULTIPART---" +isMultipart);
return "hello";
}
Run Code Online (Sandbox Code Playgroud)
日志输出是:
==== ITEMS ==== 0
---- REQUEST --- null
----- SIZE ---- 0
---- IS MULTIPART --- true
我的javascript代码是:
new AjaxUpload('#upload', {
action : my_url+ 'methodName/upload.htm',
name : 'uploadImg',
autoSubmit : true,
responseType: 'html',
onChange: function(file, extension){ },
onSubmit: function(file, extension) {
},
onComplete: function(file, html) {
alert(file);
alert(html);
}
Run Code Online (Sandbox Code Playgroud)
});
IS MULTIPART显示为true但如何获取文件名以及如何存储它.我尝试了一个没有ajax的例子,使用数据类型CommonsMultipartFile可以正常工作.此外,我在PHP中使用了ajaxupload,我得到的文件名为$ _FILES ['image'] ['name'],但在java中不知道,因为我是java的新手.我在这个网站上关注了我的类似问题,但没有成功.
谢谢.
你可以缩短它.你需要一个多部分解析器:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="100000"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
然后:
@Controller
public class FileUpoadController {
@RequestMapping(value = "/form", method = RequestMethod.POST)
public String handleFormUpload(@RequestParam("file") MultipartFile file) {
if (!file.isEmpty()) {
byte[] bytes = file.getBytes();
// store the bytes somewhere
return "redirect:uploadSuccess";
} else {
return "redirect:uploadFailure";
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7241 次 |
最近记录: |