Amazon AWS boto S3更改文件内容

时间:2016-10-20 17:41:02

标签: python amazon-web-services video amazon-s3 mp4

enter image description here尝试将mp4文件上传到Amazon S3服务器,然后上传。下载时,它的大小完全相同,但字节42,43,44会发生变化。

抬头看那是mdat。 http://www.file-recovery.com/mp4-signature-format.htm

我尝试将mime类型更改为各种类型,甚至还将扩展名更改为exe。没有运气..

尝试播放视频时,它不起作用。

我正在使用boto python框架来执行此操作。

有什么想法吗?

 # Uploads a file to a bucket
def upload_file_to_bucket(self, file_path_on_disk, file_name_in_bucket, bucket_name):
    self.remove_file_from_bucket(file_name_in_bucket, bucket_name)
    if os.path.exists(file_path_on_disk):
        print "Uploading " + file_path_on_disk + " to " + file_name_in_bucket + " in bucket " + bucket_name
        bucket = self.get_connection().get_bucket(bucket_name)
        k = bucket.new_key(file_name_in_bucket)
        k.set_contents_from_filename(file_path_on_disk, headers = {'Content-Type' : 'application/octet-stream', 'Body' : 'data'}) # {'Content-Disposition': 'attachment', 'Content-Type' : 'video/mp4'}) headers = {'Content-Type' : 'application/octet-stream'}
        k.set_acl('public-read')
        print "Uploaded file to amazon server " + bucket_name 
    else:
        print "File does not exist so cannot upload " + file_path_on_disk

编辑: 进一步看。似乎还有更多的腐败。狡猾的负载均衡器?

是否有可能确保文件正确上传?目前,这总是错误的。

编辑:

这是因为如果有人遇到此文件,则在上传之前文件没有完全写入。

1 个答案:

答案 0 :(得分:1)

正确的内容类型为video/mp4,您可以通过这两种方式将其设置为

data = open('file.mp4', 'rb')
bucket.put_object(Key='file.mp4', Body=data, ContentType='video/mp4')

确保在s3上传后正确设置了类型,导航到您的文件并检查属性/元数据。请注意,video/mp4不在AWS的可用内容类型的下拉列表中,但您可以通过编写所需内容来强制它