Rumah > Soal Jawab > teks badan
使用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
Adakah anda pasti nama parameter "fail" adalah betul?
Cuba ini, ini adalah cara saya menggunakannya tanpa masalah.
List<String> imgUrls=new ArrayList<>();
MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest) request;
List<MultipartFile> files=multipartRequest.getFiles("file");
ditambah bahagian hadapan
<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
Saya baru sahaja menghadapi masalah ini hari ini, dan saya menyelesaikannya selepas penyelidikan.
Ini kerana konfigurasi ServletRegistrationBean yang disuntik oleh anda sendiri berbeza daripada ServletRegistrationBean yang disuntik melalui but spring secara lalai. ServletRegistrationBean yang anda suntikan sendiri tidak dikonfigurasikan untuk mengendalikan permintaan muat naik secara lalai.
Sila rujuk konfigurasi berikut:
//自动注入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;
}