Anu*_*ary 1 java spring servlets spring-mvc spring-web
我无法在 spring 控制器中获取文件名
<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>
Run Code Online (Sandbox Code Playgroud)
它是我在控制器中的 post 方法
@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";
}
Run Code Online (Sandbox Code Playgroud)
提交后得到警告信息。
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
Run Code Online (Sandbox Code Playgroud)
在您的控制器中,您需要指定您期待 mutlipart
使用
consumes = {"multipart/form-data"}
Run Code Online (Sandbox Code Playgroud)
并使用 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";
}
Run Code Online (Sandbox Code Playgroud)
同样在您的 html 中,您输入的类型文件的名称应与 RequestParam“uploadedFileName”相同
<input type="file" name="uploadFileName" id="fileToUpload" required="" >
Run Code Online (Sandbox Code Playgroud)
将其更改为
<input type="file" name="uploadedFileName" id="fileToUpload" required="" >
Run Code Online (Sandbox Code Playgroud)
小智 6
您也可以使用 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";
}
Run Code Online (Sandbox Code Playgroud)
您不需要使用 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>
Run Code Online (Sandbox Code Playgroud)
您需要在您的应用程序配置中配置 MultipartResolver 对象,如下所示
@Bean(name="multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multi = new CommonsMultipartResolver();
multi.setMaxUploadSize(100000);
return multi;
}
Run Code Online (Sandbox Code Playgroud)
您可以按照有关如何在 Spring MVC 框架中的 Spring 框架上传文件中上传文件的完整教程进行操作
| 归档时间: |
|
| 查看次数: |
24280 次 |
| 最近记录: |