Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在春季上传文件?_Java_Spring_Spring Mvc_Servlets_Spring Web - Fatal编程技术网

Java 如何在春季上传文件?

Java 如何在春季上传文件?,java,spring,spring-mvc,servlets,spring-web,Java,Spring,Spring Mvc,Servlets,Spring Web,我无法在spring controller中获取文件名 <form:form method="post" modelAttribute="sampleDetails" enctype="multipart/form-data"> <input type="file" name="uploadedFileName" id="fileToUpload" required="" > <input type="submit" name="import_f

我无法在spring controller中获取文件名

<form:form method="post" modelAttribute="sampleDetails" 
 enctype="multipart/form-data">
    <input type="file" name="uploadedFileName" id="fileToUpload" required="" >
    <input type="submit" name="import_file" value="Import File" id="" />
</form:form>
@RequestMapping(method = RequestMethod.POST)
public String importQuestion(@Valid @RequestParam("uploadedFileName") 
MultipartFile multipart, @ModelAttribute("sampleDetails") SampleDocumentPojo sampleDocument,  BindingResult result, ModelMap model) {
    logger.debug("Post method of uploaded Questions ");

    logger.debug("Uploaded file Name : " + multipart.getName());
    return "importQuestion";
}
@RequestMapping(method = RequestMethod.POST,path="/testcontrol")
 public String importQuestion(@RequestParam("uploadedFileName") 
MultipartFile multipart,  BindingResult result, ModelMap model) {
    logger.debug("Post method of uploaded Questions ");

    logger.debug("Uploaded file Name : " + multipart.getName());
    return "importQuestion";
}
提交后获得警告消息

 warning [http-nio-8080-exec-9] WARN 
 org.springframework.web.servlet.PageNotFound - Request method 'POST' not 
 supported
 [http-nio-8080-exec-9] WARN 
 org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver 
 - Handler execution resulted in exception: Request method 'POST' not 
 supported

在控制器中,您需要指定您期望的是mutlipart

使用

consumes = {"multipart/form-data"}
并使用getOriginalFileName来更改文件名

@RequestMapping(method = RequestMethod.POST, consumes = {"multipart/form-data"})
public String importQuestion(@Valid @RequestParam("uploadedFileName") 
MultipartFile multipart,  BindingResult result, ModelMap model) {
   logger.debug("Post method of uploaded Questions ");

    logger.debug("Uploaded file Name : " + multipart.getOriginalFilename());
   return "importQuestion";
}
此外,在html中,类型文件输入的名称应与RequestParam uploadedFileName相同

     <input type="file" name="uploadFileName" id="fileToUpload" required="" >
换成

  <input type="file" name="uploadedFileName" id="fileToUpload" required="" >

在控制器中,您需要指定您期望的是mutlipart

使用

consumes = {"multipart/form-data"}
并使用getOriginalFileName来更改文件名

@RequestMapping(method = RequestMethod.POST, consumes = {"multipart/form-data"})
public String importQuestion(@Valid @RequestParam("uploadedFileName") 
MultipartFile multipart,  BindingResult result, ModelMap model) {
   logger.debug("Post method of uploaded Questions ");

    logger.debug("Uploaded file Name : " + multipart.getOriginalFilename());
   return "importQuestion";
}
此外,在html中,类型文件输入的名称应与RequestParam uploadedFileName相同

     <input type="file" name="uploadFileName" id="fileToUpload" required="" >
换成

  <input type="file" name="uploadedFileName" id="fileToUpload" required="" >

我认为您的表单不由importQuestion方法处理,您可以删除method=RequestMethod.POST来确保它。

我认为您的表单不由importQuestion方法处理,您可以删除method=RequestMethod.POST来确保它。

您还可以使用MutlipartFile来上传文件,如下所示

@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
 @ResponseBody
 public String uploadFile(@RequestParam("file") MultipartFile file) {

 try {

 String uploadDir = "/uploads/";
 String realPath = request.getServletContext().getRealPath(uploadDir);

 File transferFile = new File(realPath + "/" + file.getOriginalFilename()); 
 file.transferTo(transferFile);

 } catch (Exception e) {

 e.printStackTrace();

 return "Failure";
 }

 return "Success";
 }
您不需要使用spring表单进行文件上传,您可以使用普通HTML进行上传

<html>
<body>
 <h2>Spring MVC file upload using Annotation configuration Metadata</h2>

 Upload File :

 <form name="fileUpload" method="POST" action="uploadFile" enctype="multipart/form-data">
 <label>Select File</label> <br />
 <input type="file" name="file" />
 <input type="submit" name="submit" value="Upload" />
 </form>
</body>
</html>

您可以按照有关如何在Spring Framework中上载文件的完整教程进行操作

您还可以使用MutlipartFile按如下方式上载文件

@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
 @ResponseBody
 public String uploadFile(@RequestParam("file") MultipartFile file) {

 try {

 String uploadDir = "/uploads/";
 String realPath = request.getServletContext().getRealPath(uploadDir);

 File transferFile = new File(realPath + "/" + file.getOriginalFilename()); 
 file.transferTo(transferFile);

 } catch (Exception e) {

 e.printStackTrace();

 return "Failure";
 }

 return "Success";
 }
您不需要使用spring表单进行文件上传,您可以使用普通HTML进行上传

<html>
<body>
 <h2>Spring MVC file upload using Annotation configuration Metadata</h2>

 Upload File :

 <form name="fileUpload" method="POST" action="uploadFile" enctype="multipart/form-data">
 <label>Select File</label> <br />
 <input type="file" name="file" />
 <input type="submit" name="submit" value="Upload" />
 </form>
</body>
</html>
您可以按照有关如何在SpringFramework中上载文件的完整教程进行操作

您的模型名称未引用MultipartFile 可以在您的映射中进行交叉引用 试试这个:

 <form:form method="post" action="testcontrol" enctype="multipart/form-data">
<input type="file" name="uploadedFileName" id="fileToUpload" required="" >
<input type="submit" name="import_file" value="Import File" id="" />
您的模型名称未引用MultipartFile 可以在您的映射中进行交叉引用 试试这个:

 <form:form method="post" action="testcontrol" enctype="multipart/form-data">
<input type="file" name="uploadedFileName" id="fileToUpload" required="" >
<input type="submit" name="import_file" value="Import File" id="" />

感谢重播,但它会给出相同的警告消息[http-nio-8080-exec-4]WARN org.springframework.web.servlet.PageNotFound-不支持请求方法“POST”[http-nio-8080-exec-4]WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver-处理程序执行导致异常:请求方法“POST”不受支持您正在执行的请求是什么?我只是请求控制器读取文件内容并保存到数据库中。但我无法将文件放入控制器。请尝试从html formit show Http 415中删除enctype=multipart/form数据,现在警告是[Http-nio-8080-exec-10]WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver-处理程序执行导致异常:内容类型“application/x-www-form-urlencoded”不支持重播,但它给出相同的警告消息[http-nio-8080-exec-4]WARN org.springframework.web.servlet.PageNotFound-不支持请求方法“POST”[http-nio-8080-exec-4]WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver-处理程序执行导致异常:请求方法“POST”不受支持您正在执行的请求是什么?我只是请求控制器读取文件内容并保存到数据库中。但我无法将文件放入控制器。请尝试从html formit show Http 415中删除enctype=multipart/form数据,现在警告是[Http-nio-8080-exec-10]WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver-处理程序执行导致异常:内容类型“application/x-www-form-urlencoded”不受支持,但我认为它无法工作。它给出了同样的警告。谢谢,但我这么做了,它不能工作。它给出了同样的警告。