我有一个问题,我想更改一个请求的MultipartFile,因为在将服务用作普通的excel文件或其他格式之前,我必须对上传的文件进行解密。为此,我编写了一个CustomerMultipartFile
类实现MultipartFile
,并将解密字节放入新类中,并将其用作MultipartFile
实例。但是我发现,当我使用修改后的请求文件的字节时,bytes数组与我设置的字节完全不同。这是代码:
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;
}
});
任何尝试都是值得的。