Так что я работаю над этим проектом, где я хочу сохранить аудиофайл в 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
.Источник этого метода: ссылка , хотя я адаптировал его, чтобы он работал с аудиофайлами, хотя это не так.
Есть ли какие-то очевидные вещи, на которые я должен был уловить, основанные на том факте, что я не могу заставить их воспроизводить файл, или это то, чего я хочу достичь, вообще говоря, невозможно, так сказать?