@Override
    public Mono<String> saveFile(FilePart filePart) {
        FileUploadProperties.StaticFileInfo info = properties.createStaticSavePath(filePart.filename());
        return createStaticFileInfo(filePart.filename())
                .flatMap(into -> {
                    File file = new File(info.getSavePath());
                    return (filePart)
                            .transferTo(file)
                            .then(Mono.fromRunnable(() -> properties.applyFilePermission(file)))
                            .thenReturn(info.getLocation());
                });
    }
@Test
    @SneakyThrows
    public void test() {
        FileUploadProperties properties = new FileUploadProperties();
        properties.setStaticFilePath("./target/upload");
        properties.setStaticLocation("./");
        LocalFileStorageService storageService = new LocalFileStorageService(properties);

        String text = StreamUtils.copyToString(new ClassPathResource("test.json").getInputStream(), StandardCharsets.UTF_8);

        storageService
                .saveFile(new ClassPathResource("test.json").getInputStream(), "json")
                .flatMap(str -> Mono
                        .fromCallable(() -> StreamUtils
                                .copyToString(new FileInputStream("./target/upload/" + str), StandardCharsets.UTF_8)))
                .as(StepVerifier::create)
                .expectNext(text)
                .verifyComplete();

    }