Spring Rest(MVC)でファイルダウンロード

Spring Restでファイルのダウンロードをします。

Restでもないか・・・。

  1. ファイル読み込み
  2. バイト配列に変換
  3. レスポンスの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();
        }
    }
}

 

 

 

コメント

タイトルとURLをコピーしました