Файл S3 поврежден при использовании putObject - PullRequest
2 голосов
/ 05 апреля 2020

Я пытаюсь поместить и возразить в мое ведро s3, используя эти данные, возвращенные из моей конечной точки Sagemaker.

<Buffer 50 4b 03 04 14 00 00 00 08 00 6c 83 85 50 2c 2e dd 02 9e 61 93 00 fa 7f a1 00 32 00 00 00 6f 75 74 70 75 74 2f 61 75 64 69 6f 5f 66 69 6c 65 5f 31 35 ... > }

Запрос на поставку для s3 работает отлично. Размер файла, как и ожидалось, 18 МБ. Тем не менее, когда я пытаюсь воспроизвести mp3-ссылку внутри браузера или загрузить файл для воспроизведения, он говорит, что файл дает мне эту ошибку:

This file isn't playable. That might be because the file type is unsupported, the file extension is incorrect, or the file is corrupt.

Вот мой putObject function:

var params = {
    Bucket : 'musicbucket-audio-uploads',
    Key : 'test.wav',
    Body : data.Body, //This is the Buffer Data
    ContentType: 'audio/wav'
};
s3.putObject(params, function(err, data) {
     if (err) console.log('PutObject Error: ' + err); 
     else     console.log(data);          
});

Я думаю, что неправильно делаю шаг в своих параметрах для putObject, но не уверен, что это такое. Может ли кто-нибудь помочь мне определить мою ошибку?

1 Ответ

3 голосов
/ 06 апреля 2020

Начальные байты вашего файла не соответствуют формату WAV f ie (RIFF) и не похожи на MP3. Это должен быть какой-то другой формат файла. Я бы проверил документы модели SageMaker или спецификацию - что там говорится о формате возвращаемого буфера?

Обновление: кажется, что это ZIP-файл. Обратите внимание, что 50 4b шестнадцатеричные байты равны PK (для Фила Каца, создателя оригинального формата сжатия ZIP).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...