Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在AmazonS3上下载文件以进行修改_Java_Amazon S3 - Fatal编程技术网

Java 在AmazonS3上下载文件以进行修改

Java 在AmazonS3上下载文件以进行修改,java,amazon-s3,Java,Amazon S3,所以我使用S3来存储基本的音频文件,我用cloudfront来流式处理这些文件。我需要修改这些文件的元数据(不是s3对象的元数据,而是音乐的标签),或者将这些文件转换为另一种格式(mp3到m4a等)。因此,按照我的看法,我需要将这些文件下载到我的服务器,修改这些文件或对这些文件进行转码,然后重新加载这些文件 我看到了一些方法可以做到这一点,但我怀疑哪种方法是正确的还是最好的 因此,一种方法是下载包含以下代码的文件 S3Object object = s3.getObject(new GetObj

所以我使用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控制台中查看时,我看到了文件的正确名称,但没有路径

我的另一个想法是使用cloudfront下载文件,创建下载分发版


我可以直接使用和inputstream修改元数据吗?

您可以选择任何名称保存此文件,就像通过HTTP下载的任何其他文件一样

但是,正如你在问题中提到的:

String disposition = object.getObjectMetadata().getContentDisposition()
应该为您提供可选的内容配置HTTP头,该头指定对象的表示信息,例如要另存为的对象的建议文件名

如果未设置内容处置标头,此函数将返回
null


这是来自Amazon在线文档:有关内容处置头如何影响HTTP客户端行为的更多信息,请参阅。

很抱歉,在完成之前我点击了保存。当我打印处置时,我得到了空值。我想您的问题实际上是将文件上载回S3,同时覆盖以前的版本,对吗?是,我正在考虑解决这个问题的方法,但是我想我可能可以在没有路径的情况下获得文件名,所以我在这里的选项可能是正则表达式,对吗?