此代码是用于处理上传的RestEasy代码:
@Path("/fileupload")
public class UploadService {
@POST
@Path("/upload")
@Consumes("multipart/form-data")
public Response create(@MultipartForm FileUploadForm form)
{
// Handle form
}
}
有没有类似的东西使用Spring可以像这样处理MultipartForm
?
答案 0 :(得分:2)
Spring include有一个依赖于commons-fileupload的multipartresolver,因此要使用它,你必须将它包含在你的构建中。
在applicationContext.xml
中<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="<max file size>"/>
</bean>
在您的控制器中,使用org.springframework.web.multipart.MultipartFile。
@RequestMapping(method=RequestMethod.POST, value="/multipartexample")
public String examplePost(@RequestParam("fileUpload") MultipartFile file){
// Handle form upload and return a view
// ...
}
答案 1 :(得分:0)
这是一个示例,展示了如何使用MVC Annotations在Spring中实现类似的东西:
@RequestMapping(method=RequestMethod.POST, value="/multipartexample")
public String examplePost(@ModelAttribute("fileUpload") FileUpload fileUpload){
// Handle form upload and return a view
// ...
}
@InitBinder
public void initBinder(ServletRequestDataBinder binder) {
binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
}
public class FileUpload implements Serializable {
private MultipartFile myFile;
public MultipartFile getMyFile() {
return myFile;
}
public void setMyFile(MultipartFile myFile) {
this.myFile = myFile;
}
}
您应该能够从html表单发布到此端点,假设文件元素的名称是“myFile”。您的表单可能如下所示:
<form:form commandName="fileUpload" id="fileUploadForm" enctype="multipart/form-data">
<form:input type="file" path="myFile" id="myFile"/>
</form:form>
@InitBinder代码很重要,因为它指示Spring将文件转换为字节数组,然后可以将其转换为MultipartFile