Потоковый аудиофайл прямо из BLOB-объекта - PullRequest
0 голосов
/ 13 ноября 2018

Так что я работаю над этим проектом, где я хочу сохранить аудиофайл в LARGEBLOB в базе данных, размер файла ограничен примерно 10 МБ, и я могу загружать данные через Java-сервлет, которыйпозволяет воспроизводить медиа-файл.

Большинство источников, которые мне удалось найти, предлагает хранить его локально, однако я хочу избежать этого решения, основываясь на том факте, что я хотел бы перестроить веб-сайт.где-то совершенно другое и не должно полагаться на одинаковую структуру папок.

Проблемы, с которыми я сталкиваюсь, связаны главным образом с тем, что веб-браузер неправильно интерпретирует двоичные данные, предоставляемые сервлетом.Однако ему удается извлечь, что это какой-то аудиофайл;он не может определить тип аудиофайла, из-за чего я полагаю, что сервлет либо не предоставляет достаточно данных, либо что я не делаю достаточно, чтобы инструктировать веб-браузер о том, как воспроизводить файл.

Например, если у меня есть файл audio.mp3, который я загрузил в базу данных в таблицу Tracks и сохранил в столбце TrackFile.Предполагая запрос выбора правильной песни из таблицы, какие данные должен предоставить сервлет, чтобы браузер воспроизводил файл при доступе к сервлету.В настоящее время, когда я загружаю сервлет, браузер, похоже, предполагает, что типом является audio/mpeg вместо audio/mp3.Содержимое, доставляемое в настоящее время сервлетом, также выглядит примерно так:

response.setHeader("Content-Type", this.getServletContext().getMimeType(t.getTrackName() + '.' + t.getFileType()));
response.setHeader("Content-Length", String.valueOf(t.getTrackData().length));
response.setHeader("Content-Disposition", "inline; filename=\"" + t.getTrackName() + '.' + t.getFileType() + "\"");

response.getOutputStream().write(t.getTrackData());

, где t - это объект, который содержит все данные, которые можно извлечь из таблицы базы данных о конкретной дорожке.Метод getTrackData() возвращает byte[] с содержимым столбца TrackFile.Источник этого метода: ссылка , хотя я адаптировал его, чтобы он работал с аудиофайлами, хотя это не так.

Есть ли какие-то очевидные вещи, на которые я должен был уловить, основанные на том факте, что я не могу заставить их воспроизводить файл, или это то, чего я хочу достичь, вообще говоря, невозможно, так сказать?

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