java - 使用DispatcherServlet后MultipartFile接收不到文件
高洛峰
高洛峰 2017-04-18 10:30:38
0
3
867

使用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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(3)
Peter_Zhu

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>
巴扎黑
var formData = new FormData();
formData.append('file', $('#****')[0].files[0]);
迷茫

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;
    }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan