Java Thymeleaf как заменить файл - PullRequest
1 голос
/ 22 января 2020

Я пишу приложение для шифрования и дешифрования файлов. Я борюсь с загрузкой и сохранением файла. Я правильно отправляю файл из моего html ввода в контроллер, внутренние байты контроллера зашифрованы, но как после этого сохранить этот файл по тому же пути? Это должно выглядеть так: пользователь выбирает файл для шифрования, нажимает кнопку «Шифрование» и затем выбираемый файл заменяется новым (зашифрованным).

Я пытался использовать .transferTo из интерфейса MultipartFile, но он не работает.

У кого-нибудь есть подсказка, как решить эту проблему?

Вот мой html:

<form th:action="@{/crypto/encryption}" th:object="${file}" enctype="multipart/form-data" method="post">
    <label class="file">
        <input type="file" id="file" name="file" aria-label="File browser example" style="position: relative; margin-top: 300px; right: 400px;">
        <span class="file-custom"></span>
    </label>
    <label for="encryption"></label>
    <input type="submit" id="encryption" name="encryption" class="parallelogram" value="Encryption" style="background-color: blue;">
    <label for="decryption"></label>
    <input type="submit" id="decryption" name="decryption" class="parallelogram" value="Decryption" style="background-color: blue;">
</form>

и мой контроллер:

@RequestMapping("/crypto")
@Controller
public class EncryptionController {

    @Autowired
    private EncryptionService encryptionService;


    @PostMapping("/encryption")
    public encryptFile(@RequestParam("file") MultipartFile multipartFile) throws IOException {
        byte[] bytes = multipartFile.getBytes();
        byte[] encryptedBytes = encryptionService.encryption(bytes);

        File f = convert(multipartFile);
        multipartFile.transferTo(f);
    }
}

Буду очень признателен за любую помощь.

Редактировать

Проблема решена , Я использовал FileOutputStream.

@Service
public class FileService {


public void saveFile(byte[] fileBytes, File f) throws IOException {
    String path = f.getAbsolutePath();
    File file = new File(path);
    FileOutputStream fos = new FileOutputStream(file);
    fos.write(fileBytes);
    fos.close();
}

public File convert(MultipartFile file) throws IOException {
    File convFile = new File(file.getOriginalFilename());
    convFile.createNewFile();
    FileOutputStream fos = new FileOutputStream(convFile);
    fos.write(file.getBytes());
    fos.close();
    return convFile;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...