смог найти решение.
Есть запрос от клиента:
const fetchFileById = async ({ mediaId }: FetchFileByIdProps) => {
const { data } = await axios.get(/api/media-file?id=${mediaId}, {
responseType: "arraybuffer",
headers: {
"Content-Type": "audio/mpeg",
Accept: "audio/mp3",
},
});
return data;
};
Сервер отдает файл так:
fs.readFile(__dirname + mediaURL, (err, data) => {
return res.writeHead(200, { "Content-type": "audio/mpeg" }).end(data);
});
Каким образом можно получить данные не в формате "arraybuffer", а, например, JSON.
Скажем, сообщение, что файл не найден или недоступен для пользователя, типа такого:
if (mediaMetadata.isProtected) {
return (
res
.json({ message: "Requested media file is protected" })
);
}
Если я возвращаю JSON, то он все равно принимается как "arraybuffer" и я не могу отобразить его.
Как поступить?
не думаю что у вас получиться одновременно сделать чтобы axios и arraybuffer считывал, и json решение - парсить сам arraybuffer на предмет JSON
а еще проще использовать статус коды 404 - not found 403/401 - file is protected
Я тоже об этом думал сначала, но хотел узнать, если ли вариант с двумя форматами. Спасибо за помощь!
Обсуждают сегодня