Попытка загрузить файл mp4 на сервер Amazon S3, он загружает. При загрузке это точно такой же размер, но байты 42, 43, 44 меняются.Amazon AWS boto S3 Изменение содержимого файла
Глядя, что это 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
Редактировать: Далее. Кажется, что коррупция намного больше. Дозильный балансировщик нагрузки?
Возможно ли, чтобы файл был загружен правильно? На данный момент это всегда неправильно.
EDIT:
Это было связано с файлом не полностью написана до загружается, если кто сталкивается с этим.
S3 поддерживает дополнительный заголовок для загрузки «Content-MD5», который должен быть установлен на base64 - двоичный двоичный файл MD5 загруженного объекта. Если boto автоматически не сделает это для вас, разработчики должны отменить свои привилегии на клавиатуре ... потому что S3 отклонит поврежденную загрузку, если этот хеш не совпадает с загрузкой - вот как вы гарантируете целостность загрузки. Во-вторых, при загрузке объекта etag устанавливается в шестнадцатеричный md5 (или вывод немного более сложный алгоритм для многостраничных загрузок). Помогает ли это? Если etag соответствует md5, он правильно хранится в S3. –