2016-12-25 89 views
0

我在弹簧中绑定文件时遇到问题。我试图将文件保存在一个文件夹中并将文件名保存在数据库中。但是,我在表单中绑定文件时遇到了一些错误。如何在弹簧中绑定文件并上传文件夹中的文件

@Controller

@RequestMapping(value="/addStudent",method=RequestMethod.POST) 
public String saveStudent(@RequestParam("images") MultipartFile files,@ModelAttribute("addstd") StudentInfo theStudent,Model model){ 
     String fileName=null; 

    if(!files.isEmpty()){ 

     try { 
      String path= session.getServletContext().getRealPath("/WEB-INF/resources/images"); 
      String newName=String.valueOf(new java.util.Date().getTime()); 
      fileName=files.getOriginalFilename(); 
      String ext=FilenameUtils.getExtension(fileName); 
      File imageFile=new File(path,newName+"."+ext); 
      files.transferTo(imageFile); 
      theStudent.setImages(newName+"."+ext); 

     } catch (Exception e) { 

     } 
    } 
    studentService.saveStudent(theStudent); 
    return "redirect:/login"; 
} 

数据库类

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name="id") 
private int id; 

@Column(name="year_id") 
private int year; 


@Column(name="faculty_id") 
private int faculty; 

@Column(name="firstname") 
private String firstName; 

@Column(name="lastname") 
private String lastName; 

@Column(name="contact_no") 
private String contact_No; 

@Column(name="address") 
private String address; 

@Column(name="email") 
private String email; 

@Column(name="images") 
private String images; 

我的JSP页面:

<form:form action="addStudent" enctype="multipart/form-data" modelAttribute="addstd" method="POST">  
    <form:hidden path="id" /> 
    <form:input path="firstName" placeholder="Fistname" /> 
    <form:input path="lastName" placeholder="Lastname" /> 
    <form:input path="contact_No" placeholder="Contact Number" /> 
    <form:input path="address" placeholder="Address" /> 
    <form:input path="email" placeholder="Email"/
    Year: 

    <form:select path="year"> 
      <c:forEach var="temp" items="${studentyear}"> 
      <form:option value="${temp.yearId}">${temp.year}</form:option> 
      </c:forEach> 
     </form:select> 

     Faculty: 
     <form:select path="faculty"> 
      <c:forEach var="temp" items="${studentfaculty}"> 
      <form:option value="${temp.faculty_id}" >${temp.faculty}</form:option> 
      </c:forEach> 
     </form:select> 
     Profile: <form:input type="file" path="images" /> 

    <input type="submit" value="Add/Update Record" class="button" /> 
</form:form> 

在这段代码中,我得到的错误“,由客户端发送的请求是语法错误。“在下面的代码片段在JSP

<form:input type="file" path="images" /> 

与名称替换

回答

0

删除路径= “图像”

<input type="file" name="images" /> 

,因为路径将尝试与POJO映射。

+0

我试图用名称替换路径,但出现以下错误“根据TDL或标记文件,属性路径对于标记输入是强制性的” – sudeepsth

+0

删除前面的表单标记。错过了 –

相关问题