web-dev-qa-db-ja.com

Spring Bootアプリケーションのアプリケーションルートパス

この answer は、アプリケーションのルートパス(ファイルシステムパス)を取得する標準的な方法ではありません。ファイルをディレクトリにアップロードする必要があります。アプリケーションのメインディレクトリに作成されたアップロード。 Javaクラスでアプリケーションルートパスを取得するにはどうすればよいですか。RestAPIを開発しています。この点で助けてください。

7
Bahadar Ali

私が正しく理解している場合、REST APIを開発し、アプリケーションディレクトリにあるディレクトリにファイルをアップロードすることを目的としています。リソースディレクトリにfile、images、..を作成することをお勧めします。そして、基本的には、このディレクトリの絶対パスを取得するためにサーブレットコンテキストを使用する必要があります。

@Autowired
ServletContext context;

次に、絶対および相対ディレクトリ( "resources/uploads")を取得できます。

String absolutePath = context.getRealPath("resources/uploads");
File uploadedFile = new File(absolutePath, "your_file_name");

編集:

REST APIを開発したいと考えています。したがって、最初にコントローラークラスを作成できます

@RestController
@RequestMapping("/file")
public class FileController {

@Autowired
ServletContext context;

@PostMapping("/upload") 
public String fileUpload(@RequestParam("file") MultipartFile file) {

    if (file.isEmpty()) {
       throw new RuntimeException("Please load a file");
    }

    try {

        // Get the file and save it uploads dir
        byte[] bytes = file.getBytes();
        Path path = Paths.get(context.getRealPath("uploads") + file.getOriginalFilename());
        Files.write(path, bytes);

    } catch (IOException e) {
        e.printStackTrace();
    }

    return "success";
}

}

ファイル操作を管理する別の方法があり、Spring Bootのドキュメントは非常によく説明されています: ploading Files Spring Boot

5
fiskra