Я пишу приложение для шифрования и дешифрования файлов. Я борюсь с загрузкой и сохранением файла. Я правильно отправляю файл из моего 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;
}
}