Java 在AmazonS3上下载文件以进行修改
所以我使用S3来存储基本的音频文件,我用cloudfront来流式处理这些文件。我需要修改这些文件的元数据(不是s3对象的元数据,而是音乐的标签),或者将这些文件转换为另一种格式(mp3到m4a等)。因此,按照我的看法,我需要将这些文件下载到我的服务器,修改这些文件或对这些文件进行转码,然后重新加载这些文件 我看到了一些方法可以做到这一点,但我怀疑哪种方法是正确的还是最好的 因此,一种方法是下载包含以下代码的文件Java 在AmazonS3上下载文件以进行修改,java,amazon-s3,Java,Amazon S3,所以我使用S3来存储基本的音频文件,我用cloudfront来流式处理这些文件。我需要修改这些文件的元数据(不是s3对象的元数据,而是音乐的标签),或者将这些文件转换为另一种格式(mp3到m4a等)。因此,按照我的看法,我需要将这些文件下载到我的服务器,修改这些文件或对这些文件进行转码,然后重新加载这些文件 我看到了一些方法可以做到这一点,但我怀疑哪种方法是正确的还是最好的 因此,一种方法是下载包含以下代码的文件 S3Object object = s3.getObject(new GetObj
S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
System.out.println("Content-Type: " + object.getObjectMetadata());
//displayTextInputStream(object.getObjectContent());
我可以使用File将文件写入我的服务器。
我这里的问题是如何从S3Object获取文件名,我在查看元数据并尝试使用getContentDisposition(),但它返回null,直接在AWS控制台中查看时,我看到了文件的正确名称,但没有路径
我的另一个想法是使用cloudfront下载文件,创建下载分发版
我可以直接使用和inputstream修改元数据吗?您可以选择任何名称保存此文件,就像通过HTTP下载的任何其他文件一样 但是,正如你在问题中提到的:
String disposition = object.getObjectMetadata().getContentDisposition()
应该为您提供可选的内容配置HTTP头,该头指定对象的表示信息,例如要另存为的对象的建议文件名
如果未设置内容处置标头,此函数将返回null
这是来自Amazon在线文档:有关内容处置头如何影响HTTP客户端行为的更多信息,请参阅。很抱歉,在完成之前我点击了保存。当我打印处置时,我得到了空值。我想您的问题实际上是将文件上载回S3,同时覆盖以前的版本,对吗?是,我正在考虑解决这个问题的方法,但是我想我可能可以在没有路径的情况下获得文件名,所以我在这里的选项可能是正则表达式,对吗?