Spring Restでファイルのダウンロードをします。
Restでもないか・・・。
- ファイル読み込み
- バイト配列に変換
- レスポンスのOutputStreamに設定
ContentLengthとかは設定しましょうね。
残り何%とかでないのでね。
package spring.rest.test; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class FileResponseController { @RequestMapping(value="/download", method = RequestMethod.GET) public void fileDownload(HttpServletResponse response) { try (InputStream is = new FileInputStream("z:\\download.zip"); OutputStream os = response.getOutputStream();) { byte[] fileByteArray = IOUtils.toByteArray(is); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=download.zip"); response.setContentLength(fileByteArray.length); os.write(fileByteArray); os.flush(); } catch (IOException e) { e.printStackTrace(); } } }
コメント