У меня есть сайт с 2 ссылками. Один для загрузки MP3 и один для загрузки файла WAV
Например:
<a href="https://mywesbite.com/download?file=//assets.net/beethoven-fur-elise.wav" download="beethoven-fur-elise">Download WAV</a>
и
<a href="https://mywesbite.com/download?file=//assets.net/beethoven-fur-elise.mp3" download="beethoven-fur-elise">Download MP3</a>
Я написал облачную функцию для / download /, которая будет отправлять удаленный аудиофайл, чтобы пользователю было предложено загрузить файл, а не открывать его в новой вкладке и воспроизводить.
Ссылка MP3 работает, но файл WAV не работает, и журналы ошибок показывают это
Error: incorrect function response. Function invocation was interrupted.
Function execution took 2941 ms, finished with status: 'response error'
Обратите внимание, что на моем локальном компьютере работают как WAV, так и MP3.
Размер файлов MP3
составляет 3-6 МБ
Размер файлов WAV
составляет 40 МБ
Функция Firebase Cloud
const express = require('express');
const request = require('request');
const cors = require('cors');
const helmet = require('helmet');
const downloadApp = express();
downloadApp.use(helmet());
downloadApp.use(
cors({
origin: true
})
);
downloadApp.get('/download', (req, res) => {
res.set(
'Cache-control',
`public, max-age=${CONFIG.TIME.CACHE_IN_USERS_BROWSER}, s-maxage=${
CONFIG.TIME.CACHE_IN_CDN
}`
);
/**
*
* contentType = 'audio/wav'
* OR
* contentType = 'audio/mpeg'
*
* */
res.setHeader('Content-Type', contentType);
res.setHeader('Content-disposition', `attachment; filename="${filename}"`);
// External URL to MP3 or WAV
const externalUrl = 'https://external-website.com/something.wav';
request
.get(externalUrl)
.on('error', function(err) {
console.error('Download Error: ', err);
})
.pipe(res);
});