「Spring MVC」MultipartHttpServletRequestでファイルアップロードを行うサンプル

2022年6月26日

構文
1.public interface MultipartHttpServletRequest extends HttpServletRequestEE, MultipartRequest

サーブレットリクエスト内のマルチパートコンテンツを処理する追加のメソッドを提供し、アップロードされたファイルにアクセスできるようにします。
実装では、パラメーターアクセス用の標準 ServletRequestEE メソッドをオーバーライドして、
マルチパートパラメーターを使用可能にする必要もあります。

2.インターフェース MultipartFile
public interface MultipartFile extends InputStreamSource

マルチパートリクエストで受信したアップロードファイルの表現。
ファイルの内容は、メモリに保存されるか、一時的にディスクに保存されます。どちらの場合でも、必要に応じて、ユーザーはファイルの内容をセッションレベルまたは永続ストアにコピーする責任があります。

操作方法

1.Javaコード

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(HttpServletRequest req) throws Exception {
      MultipartHttpServletRequest mreq = (MultipartHttpServletRequest) req;
      MultipartFile file = mreq.getFile("file");
      String fileName = file.getOriginalFilename();
      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
      FileOutputStream fos = new FileOutputStream(req.getSession().getServletContext().getRealPath("/") + "upload/"
                  + sdf.format(new Date()) + fileName.substring(fileName.lastIndexOf('.')));
      fos.write(file.getBytes());
      fos.flush();
      fos.close();

      return "hello";
}

2.設定ファイル

<!-- upload settings -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="102400"></property>
</bean>

3.formコード

<form action="mvc/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"><br>
<input type="submit" value="submit">
</form>

 

SpringMVC

Posted by arkgame