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();
}
}
}


コメント