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