2016-10-20 16 views
0

enter image description here Amazon S3サーバーにmp4ファイルをアップロードしようとするとアップロードされます。ダウンロード時にはまったく同じサイズですが、バイト42,43,44が変更されます。Amazon AWS boto S3ファイルの内容を変更する

これはmdatです。 http://www.file-recovery.com/mp4-signature-format.htm

MIMEタイプをいろいろに変更しようとしましたが、エクステンションをexeに変更しました。 No luck ..

ビデオを再生しようとすると、再生できません。

私はこれを行うために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 

編集: さらにご覧ください。それよりもはるかに多くの腐敗があるようです。 Dodgyロードバランサ?

ファイルが正しくアップロードされるようにする方法はありますか?現時点では、常に間違っています。

EDIT:

これは完全には誰もこれに遭遇した場合、アップロードされる前に書かれていないファイルによるものでした。

+0

S3はオプションのアップロードヘッダ、Content-MD5をサポートする。これはbase64アップロードされたオブジェクトのエンコードされたバイナリMD5。 botoが自動的にあなたのためにそれをしない場合、開発者はキーボードの特権を取り消さなければなりません...このハッシュがアップロードで一致しないならば、S3は壊れたアップロードを拒否します。第2に、オブジェクトをアップロードするとき、etagは16進数でエンコードされたmd5に設定されます(またはマルチパートアップロードの場合は少し複雑なアルゴリズムを出力します)。これは役に立ちますか?エタグがmd5と一致すると、S3に正しく格納されます。 –

答えて

1

適切なコンテンツタイプを使用すると、タイプがS3にアップロードした後に正しく設定されていることを確認し、あなたのファイルに移動し、/メタデータのプロパティをチェックし、両方の

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

からこのようにそれを設定することができvideo/mp4です。 video/mp4はAWSの利用可能なコンテンツタイプのドロップダウンリストにはないが、あなたが望むコンテンツを書くことによってそれを強制することができる。

+0

それを試しましたが、うまくいきませんでした。まったく同じ問題 – robby987

+0

"Body = data" – robby987

+0

pythonコードを使用してファイルをプッシュする方法をコードを更新する - ブラウザから直接ファイルをアップロードし、コンテンツタイプを設定しようと同じ問題がありますか? –