私はスプリングブートでWebアプリケーションを開発しています。アプリケーションでは、ファイルをアップロードし、そのファイルの絶対パスがデータベースに保存された後にローカルフォルダにコピーします。だから私はファイルがあり、それがどこにあるのか知っていますが、私はそれをlocalhostで手に入れることはできません。私は春に静的ファイル用の静的フォルダを持っていることを知っていますが、私は他のアプリケーションでこのデータを使用するため、ファイルをコピーしたくありません。例えばlocalhostからローカルファイルにアクセスする方法
:
ローカルファイルの場所:/Users/user/data/image.png
私はそのように到達したい:http://localhost:8080/data/image.png
編集:私は解決策を見つけます。これにはMvcUriComponentsBuilder
を使用しました。
String url = MvcUriComponentsBuilder.fromMethodName(FileController.class,"serveFile",resource.getFilename()).build().toString();
コントローラメソッドの戻り値です。
方法:
@GetMapping("/files/{filename:.+}")
@ResponseBody
public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
Resource file = storageService.loadAsResource(filename);
return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
"attachment; filename=\"" + file.getFilename() + "\"").body(file);
}
実際の場所からファイルを読み込み、 'localhost:8080'形式で説明したように' @ RequestMapping'を使ってマップするコントローラを作成することができます – sfat
クラスパスを使用してデータフォルダからファイルを取得し、絶対パス。 – kc007