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

2022年6月26日

構文
1.public interface MultipartHttpServletRequest extends HttpServletRequestEE, MultipartRequest

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

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

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

操作方法

1.Javaコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@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";
}
@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"; }
@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.設定ファイル

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<!-- upload settings -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="102400"></property>
</bean>
<!-- upload settings --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="102400"></property> </bean>
<!-- upload settings -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="102400"></property>
</bean>

3.formコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<form action="mvc/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"><br>
<input type="submit" value="submit">
</form>
<form action="mvc/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"><br> <input type="submit" value="submit"> </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