所以我使用S3来存储基本上的音频文件,我使用cloudfront传输这些文件。我需要修改这些文件的元数据(不是s3对象的元数据,而是音乐的标签),或者将这些文件转换为另一种格式(mp3到m4a等)。所以我看到它的方式我需要将这些文件下载到我的服务器,修改文件或转码这些文件,然后重新上传文件。
我看到了一些方法可以做到这一点,但我对哪种方法或最佳方法有所怀疑。
所以一种方法是使用以下代码下载文件
S3Object object = s3.getObject(new GetObjectRequest(bucketName, key));
System.out.println("Content-Type: " + object.getObjectMetadata());
//displayTextInputStream(object.getObjectContent());
我可以使用File将文件写入我的服务器。 我的问题是如何从S3Object获取文件名,我在查看元数据并尝试使用getContentDisposition(),但它返回null,直接在AWS Console中查看我看到文件的正确名称而没有路径。
我的另一个想法是使用cloudfront下载文件,创建下载分发。
我可以直接使用和输入流来修改元数据吗?
答案 0 :(得分:0)
您可以使用您选择的任何名称保存此文件,就像您通过HTTP下载的任何其他文件一样。
但是,正如您在问题中提到的那样:
String disposition = object.getObjectMetadata().getContentDisposition()
应该为您提供可选的Content-Disposition HTTP标头,该标头指定对象的显示信息,例如要保存为的对象的推荐文件名。
如果尚未设置Content-Disposition标头,则此函数返回null
。
这是来自亚马逊在线文档:有关Content-Disposition标头如何影响HTTP客户端行为的详细信息,请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1。