【Java】APIでファイルダウンロードしたい!SpringのResourceライブラリを使ってみる

Spring FrameworkのResourceを使用してファイルダウンロードのAPIを実装し、ブラウザからAPIを叩くとファイルがダウンロードされるようにする方法は以下のコントローラを作ると良いと思います

以下の例は単純なダウンロードになりますが、ファイルの取得に際して、ロジックを組む場合はサービスクラスやロジック、リポジトリ等作成ください

import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.core.io.ClassPathResource;

import java.io.IOException;

@RestController
public class FileDownloadController {

    @GetMapping("/download")
    public ResponseEntity<Resource> downloadFile() throws IOException {
        // Resourceを使用してファイルを読み込む
        Resource resource = new ClassPathResource("path/to/your/file.txt");

        // レスポンスのヘッダーを設定する
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        // ファイル名を指定する
        headers.setContentDispositionFormData("attachment", "file.txt");

        return ResponseEntity.ok()
                .headers(headers)
                .body(resource);
    }
}

このコードではorg.springframework.core.io.Resourceの実装クラスであるClassPathResourceを使用して、クラスパス上のファイルを読み込んでいます
その後、ResponseEntityを使用して、ResourceをHTTPレスポンスのボディとして返しています
また、Content-Dispositionヘッダーを使用して、ブラウザがダウンロードダイアログを表示するようにファイル名を指定しています

是非参考くださいっ

ではっ

是非フォローしてください

最新の情報をお伝えします