2012-03-28 56 views
0

我真的这样做Java + Spring:如果我有没有HttpRequest的路径,我可以上传文件吗?

protected ModelAndView onSubmit(HttpServletRequest request, 
     HttpServletResponse response, Object command, BindException errors) 
     throws Exception { 
    MultipartFile multipartFile = null; 
    File destFile = new File(
      "/home/stas/eclipse/" + request.getParameter("fileName")); 
multipartFile.transferTo(destFile); 

但我有例外

27.03.2012 20:39:45 org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [springapp] in context with 
    path [/springapp] threw exception [Request processing failed; 
    nested exception is java.lang.NullPointerException] with root cause 
    java.lang.NullPointerException 
+1

你没有指定'multipartFile'任何东西。你怎么能指望它不扔NPE? – adarshr 2012-03-28 11:41:03

回答

4

NullPointerException是相当明显的:

MultipartFile multipartFile = null; 
File destFile = new File("/home/stas/eclipse/"+request.getParameter("fileName")); 
multipartFile.transferTo(destFile); <-----Exception 

multipartFile变量从未被初始化,并抛出NPE被第一次访问时。

你可以从要求所有上传的文件使用:

public ModelAndView onSubmit(HttpServletRequest request, /*...*/) { 
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request; 
    Map<String, MultipartFile> files = multipartRequest.getFileMap(); 
+0

如果我只有路径,应该如何初始化multipartFile? – 2012-03-28 11:48:41

+0

@СтаниславБатурин:看我的更新。 – 2012-03-28 12:19:26

+0

我有列表文件名,用户选择1个文件(单选按钮),我必须上传这个文件。我在我的控制器中只接收名称文件(字符串)和路径(字符串)。我不使用选择文件,这可能吗? – 2012-03-28 12:26:25

相关问题