Java 如何在春季上传文件?
我无法在spring controller中获取文件名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
<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”不受支持,但我认为它无法工作。它给出了同样的警告。谢谢,但我这么做了,它不能工作。它给出了同样的警告。