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