我有一个有两个提交按钮的表单。保存按钮将对象保存到数据库,同时将上载文件保存到本地目录。发送按钮会自动向收件人生成电子邮件。
到目前为止我有什么
@RequestMapping(value = "/staff/setter/addPage", method = RequestMethod.POST)
public String processModule(@RequestParam("name") String name,
@RequestParam("file") MultipartFile file, @ModelAttribute("module")
Module module, Staff staff, HttpServletRequest request, BindException errors,
HttpSession session) {
if( request.getParameter("save") != null )
{
if(module != null){
try {
MultipartFile filea = module.getFileData();
InputStream inputStream = null;
OutputStream outputStream = null;
if (filea.getSize() > 0) {
inputStream = filea.getInputStream();
outputStream = new FileOutputStream("C:\\Test\\"
+ filea.getOriginalFilename());
System.out.println("==========Uploaded File
Name=========");
System.out.println(filea.getOriginalFilename());
System.out.println("====================================");
int readBytes = 0;
byte[] buffer = new byte[8192];
while ((readBytes = inputStream.read(buffer, 0, 8192)) !=
-1) {
outputStream.write(buffer, 0, readBytes);
}
outputStream.close();
inputStream.close();
session.setAttribute("success", "File Uploaded
Successfully");
session.setAttribute("uploadFile", "C:\\Test\\"
+ filea.getOriginalFilename());
}
} catch (Exception e) {
e.printStackTrace();
}
//Save specific processing
moduleService.save(module);
}
return "redirect:/staff/setter/addPage";
}
else if( request.getParameter("send") != null )
{
//Send specific processing.
SimpleMailMessage msg = new SimpleMailMessage(this.templateMessage);
//msg.setTo(module.getCustomer().getEmailAddress());
msg.setTo(module.getChecker().getEmail());
//msg.setTo(staff.getChecker().getEmail());
msg.setText(
"Dear " + module.getChecker().getName()
//"Dear " + staff.getChecker().getEmail()
//+ module.getCustomer().getLastName()
+ "a coursework has been submitted for checking"
+ module.getModuleCode()
+module.getModuleName());
try{
this.mailSender.send(msg);
}
catch(MailException ex) {
// simply log it and go on...
System.err.println(ex.getMessage());
}
}
return "/staff/setter/view_submission";
}
到目前为止,错误是
HTTP Status 400 - The request sent by the client was syntactically incorrect.
我将不胜感激。
编辑:Jsp页面
<c:url var="processUrl" value="/staff/setter/addPage" />
<form:form modelAttribute="module" method="POST" action="${processUrl}" name="module"
enctype="multipart/form-data">
<form:hidden path="moduleId" />
<div class="admin">
<table>
<tr>
<td class="module">
</td>
<td>Module Code:</td>
<td>Module Name:</td>
</tr>
<tr>
<td>Convenor:</td>
<td>Checker:</td>
</tr>
<tr>
<td>Weights:</td>
</tr>
</table>
</div>
<div class ="lecturer">
<h4>Lecturer Section</h4>
<ul>
<form:label path="fileName">Document Title:</form:label>
<form:input path="fileName" name="name"/><br/>
<form:label path="documentPath">Coursework Sample:</form:label>
<form:input path="documentPath" type="file" name="file" id="file"/><br/>
<form:label path="liveDate">Live Date:</form:label>
<form:input path="liveDate"/><br/>
<form:label path="submissionDate">Submission Date:</form:label>
<form:input path="submissionDate"/><br/>
<form:label path="filename">Marked Sample Title:</form:label>
<form:input path="filename" id="file" name="name"/><br/>
<form:label path="markedSamplePath">Marked Sample:</form:label>
<form:input path="markedSamplePath" type="file" name="file"/><br/>
</ul>
</div>
</form:form>
答案 0 :(得分:1)
如果您想避免处理多部分表单的麻烦,并可能为用户提供更好的体验。例如,您的表单数据有错误,用户需要重新提交表单,您的文件上载将丢失。
我使用fineuploader构建一个上传的文件作为隐藏的输入,上传自己是单独的请求。
在此解释:Preserving value for <form:input type="file"> with Spring MVC