У меня есть проблема, из-за которой я хочу изменить MultipartFile одного запроса, так как мне нужно расшифровать загруженный файл, прежде чем моя служба сможет использовать его как обычный файл Excel или какой-либо другой формат. Для этого я пишу класс CustomerMultipartFile
, реализующий MultipartFile
, и помещаю байты дешифрования в новый класс и использую его как экземпляр MultipartFile
. Но я обнаружил, что когда я использую байты измененного файла запроса, массив байтов полностью отличается от того, что я в него установил. Вот код:
registry.addInterceptor(new HandlerInterceptorAdapter() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
boolean isMultipart = multipartResolver.isMultipart(request);
if(isMultipart && encrypt.isEncrypt()){
Map<String, MultipartFile> map = multipartResolver.resolveMultipart(request).getFileMap();
Set<String> keys = map.keySet();
for(String key : keys){
MultipartFile file = map.get(key);
byte[] content = FileUtils.decrypt(file.getBytes());
CustomerMultipartFile cf = new CustomerMultipartFile();
cf.setContentType(file.getContentType());
cf.setName(file.getName());
cf.setOriginalFilename(file.getOriginalFilename());
cf.setBytes(content);
cf.setSize(content.length);
map.put(key, cf);
}
}
return true;
}
});
Любая попытка приветствуется.