recherche

Maison  >  Questions et réponses  >  le corps du texte

java - 使用DispatcherServlet后MultipartFile接收不到文件

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

高洛峰高洛峰2803 Il y a quelques jours851

répondre à tous(3)je répondrai

  • 天蓬老师

    天蓬老师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>

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:32:38

    var formData = new FormData();
    formData.append('file', $('#****')[0].files[0]);

    répondre
    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;
        }

    répondre
    0
  • Annulerrépondre