2017-12-26 283 views
-1

私はスプリングブートで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); 
    } 
+0

実際の場所からファイルを読み込み、 'localhost:8080'形式で説明したように' @ RequestMapping'を使ってマップするコントローラを作成することができます – sfat

+0

クラスパスを使用してデータフォルダからファイルを取得し、絶対パス。 – kc007

答えて

0

私は問題は、使用しているURLであると思います。それを次のように変更してください:

@RequestMapping("/data/{filename:.+}") 

これは動作します。

+0

これは私の解決策でもありません。 –

関連する問題