banner
RustyNail

RustyNail

coder. 【blog】https://rustynail.me 【nostr】wss://ts.relays.world/ wss://relays.world/nostr

springMVC 处理Multipart 类型的请求

springMVC 处理 Multipart 类型的请求#

处理表单的时候,可能会传过来一个文件。

配置 multipart 解析器#

解析器是 MultipartResolver 的子类,一般使用standardServletMultipartResolver就行了。

直接在 spring 配置文件里添加

<bean class="org.springframework.web.multipart.support.StandardServletMultipartResolver"></bean>

或者

@Bean
public MultiPartResolver getMultipartResoler(){
  return new StandardServletMultipartResolver();
}

配置上传的要求#

#web.xml

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <multipart-config>
            <location>D:\</location>
            <max-file-size>209152</max-file-size>
            <max-request-size>4194304</max-request-size>
        </multipart-config>
    </servlet>

是在 DispartcherServlet 里面配置,使用multipart-ocnfig标签

** location 要确保适合,不然上传文件后会因为路径不符合要求报错 **

controller#

@RequestMapping(value = "/upload",method = RequestMethod.POST)
    @ResponseBody
    public String vallidateRegisterForm(@RequestPart("myfile")MultipartFile file) throws IOException {
      file.transferTo(new File(file.getOriginalFilename()));
      return "upload success.";
}

我们使用了@RequestPart("myfile")MultipartFile file, MultipartFile 可以很方便的处理上传后的文件。

这是他的接口定义

public interface MultipartFile extends InputStreamSource {
    String getName();

    String getOriginalFilename();

    String getContentType();

    boolean isEmpty();

    long getSize();

    byte[] getBytes() throws IOException;

    InputStream getInputStream() throws IOException;

    void transferTo(File var1) throws IOException, IllegalStateException;
}

随便写个表单测试一下#

<form class="fileform" action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="myfile" value="">
    <input type="submit" name="" value="submit">
</form>
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。