【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ヘッダーを使用して、ブラウザがダウンロードダイアログを表示するようにファイル名を指定しています
是非参考くださいっ
ではっ
是非フォローしてください
最新の情報をお伝えします