2017-11-30 8 views
1

添付ファイルとともにデータをアップロードしようとするとコントローラポストメソッドがあります。正常に動作します。 しかし、ファイルが添付されていないときの処理方法とデータの読み方を知りたい。CommonsMultipartFile Controllerにファイルを添付せずにフォームデータを送信する方法は?

@RequestMapping(value="saveimage",method=RequestMethod.POST) 
public ModelAndView saveimage(@RequestParam CommonsMultipartFile file,HttpSession session,HttpServletRequest request,HttpServletResponse response) throws Exception 
{ 
DiskFileItemFactory factory = new DiskFileItemFactory(); 
factory.setSizeThreshold(THRESHOLD_SIZE); 
factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); 

ServletFileUpload upload = new ServletFileUpload(factory); 
ServletContext context = session.getServletContext(); 

String uploadPath = context.getRealPath(UPLOAD_DIRECTORY); 
System.out.println(uploadPath);  

System.out.println(file.getOriginalFilename()); 


byte[] bytes = file.getBytes(); 
BufferedOutputStream stream =new BufferedOutputStream(new FileOutputStream(new File(uploadPath + File.separator + file.getOriginalFilename()))); 
stream.write(bytes); 
stream.flush(); 
stream.close(); 
EmpFileBean e=new EmpFileBean(); 
e.setFile(file.getOriginalFilename()); 
e.setTextdata(request.getParameter("textdata")); 
    dao.saveImage(e); 
    request.setAttribute("img_name", e.getFile()); 
return new ModelAndView("uploadform","filesuccess","File successfully saved!"); 
} 

私のJSPは次のよ​​うになります:あなたはマルチパートファイルアップロード用の@RequestParamを使用する場合は、フィールドが空の場合

<form:form method="post" action="saveimage" attribute="EmpFileBean" 
    enctype="multipart/form-data"> 
    <p><label for="image">Choose Image</label></p> 
    <p><input name="file" id="fileToUpload" type="file" path="file"/></p> 
    <p><label for="textdata">Enter User Name</label></p> 

    <p><input name="textdata" id="textdata" type="text" path="textdata"/></p> 
    <% 
    if(request.getAttribute("img_name")!=null) 
    { 

    %> 
    <img alt="" src="images/<%=request.getAttribute("img_name")%>"> 
    <%} %> 

<p><input type="submit" value="Upload"></p> 
    </form:form> 

答えて

0

、その要求は、コントローラは、いくつかを言って受け入れられない は、ここに私のコントローラであり、

:エラーメッセージ

パラメータ「ファイルは」のようなリクエストに存在しません

しかし、Modelクラスを@ModelAttributeとして使用し、モデルクラス内に複数部分ファイルオブジェクトとそのsetter,getterを配置することができます。おそらく、このクラスはそのような何かに見える、

public class FileBean { 

    private CommonsMultipartFile file; 

    public CommonsMultipartFile getFile() { 
     return file; 
    } 

    public void setFile(CommonsMultipartFile file) { 
     this.file = file; 
    } 
} 

とコントローラから

@RequestMapping(value="saveimage",method=RequestMethod.POST) 
public ModelAndView saveimage(@ModelAttribute FileBean file,HttpSession session,HttpServletRequest request,HttpServletResponse response) throws Exception{ 
----------------------- your controller code--------- 
} 

は私が状況を教えてください。

関連する問題