在java中获取 MultipartFile 的属性的最佳方式是什么?长度,最后修改等等?
@Override
public boolean moveToAWSBucket(RegionWS regionWS, String projectId, MultipartFile file) {
//upload to s3 bucket
try {
byte[] bytes = file.getBytes();
ByteArrayInputStream input = new ByteArrayInputStream(bytes);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(file.getSize());
// put last modified date?
metadata.setLastModified();
amazonS3.putObject(amazonProps.getBucket(), organizationName + "/" + projectName + "/", input, metadata);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
答案 0 :(得分:5)
如果您使用的是Spring,则可以使用 getSize()方法。
这是定义。
这里有一些例子
http://www.mkyong.com/spring-mvc/spring-mvc-file-upload-example/
上次修改日期值是文件系统(操作系统)的一部分,因此您无法使用该文件传输此元数据。
如果您在其他字段中发送该值,则这不安全,因为任何用户都可以发送他们想要的任何值。另一件需要注意的事情是,上次修改日期取决于操作系统日期。如果用户更改其计算机日期,则表示您收到的日期并不真实。
答案 1 :(得分:0)
您可以使用transferTo方法将其转换为File
对象,然后获取所需的属性,因为MultipartFile
类中没有方法可以检索lastModified
信息。
public File multipartToFile(MultipartFile multipart) throws IllegalStateException, IOException
{
File convFile = new File( multipart.getOriginalFilename());
multipart.transferTo(convFile);
return convFile;
}