从multipartfile java获取大小和lastmodified?

时间:2015-11-26 13:25:42

标签: java spring file

在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;
}

2 个答案:

答案 0 :(得分:5)

如果您使用的是Spring,则可以使用 getSize()方法。

这是定义。

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/multipart/MultipartFile.html

这里有一些例子

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;
}