Maison > Questions et réponses > le corps du texte
使用DispatcherServlet
@Configuration
public class WebConfig {
@Bean
public ServletRegistrationBean apiV1ServletBean(WebApplicationContext wac) {
DispatcherServlet ds = new DispatcherServlet(wac);
ServletRegistrationBean bean = new ServletRegistrationBean(ds, "/*");
bean.setName("xxx");
bean.addUrlMappings("/xxx/*");
return bean;
}
}
MultipartFile接收不到文件
@RequestMapping(method = RequestMethod.POST)
public Response<String> site(@RequestParam("file") MultipartFile file, String userId, HttpServletRequest request) {
}
错误报告:Required request part 'file' is not present
天蓬老师2017-04-18 10:32:38
Êtes-vous sûr que le nom du paramètre « fichier » est correct ?
Essayez ceci, c'est comme ça que je l'utilise sans problème.
List<String> imgUrls=new ArrayList<>();
MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest) request;
List<MultipartFile> files=multipartRequest.getFiles("file");
plus front-end
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple>
<input type="submit" ">
</form>
巴扎黑2017-04-18 10:32:38
var formData = new FormData();
formData.append('file', $('#****')[0].files[0]);
迷茫2017-04-18 10:32:38
Je viens de rencontrer ce problème aujourd'hui, et je l'ai résolu après recherche.
En effet, la configuration du ServletRegistrationBean injecté par vous-même est différente du ServletRegistrationBean injecté par Spring Boot par défaut. Le ServletRegistrationBean que vous avez injecté vous-même n'est pas configuré pour gérer les demandes de téléchargement par défaut.
Veuillez vous référer à la configuration suivante :
//自动注入spring boot默认的上传配置
@Autowired
private MultipartConfigElement multipartConfigElement;
@Bean
public ServletRegistrationBean apiV1ServletBean(WebApplicationContext wac) {
DispatcherServlet servlet = new DispatcherServlet(wac);
ServletRegistrationBean bean = new ServletRegistrationBean(servlet, "/api/*");
//注入上传配置到自己注册的ServletRegistrationBean
bean.setMultipartConfig(multipartConfigElement);
bean.setName("ApiServlet");
return bean;
}