Node.js - обслуживающий файл для загрузки прямо из браузера без HTML - PullRequest
0 голосов
/ 15 ноября 2018

Я хотел бы знать, возможно ли загрузить файл непосредственно из браузера по запросу GET.

Позвольте мне объяснить:

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

Код выглядит так:

server.js

app.get('/document', async (req, res) => {
    const { filename } = req.query;

    const filepath = `${os.tmpdir()}/${filename}`
    try {
        var file = fs.readFileSync(filepath);
        return res.status(200).send({ msg: 'File read successfully', file: file })
    } catch (err) {
        return res.send({ msg: 'Problem reading file.', err: err.toString() })
    }

})

1 Ответ

0 голосов
/ 16 ноября 2018

Нашли два способа решения проблемы;

1.Использование метода res.download из экспресс

try {
    return res.download(filepath [, filename])
} catch (err) {
    return res.send({ err: 'Problem reading file.', msg: err.toString() })
}
  1. Отправка двоичных файлов и специального заголовка
try {
        var file = fs.readFileSync(filepath);
        res.setHeader('Content-disposition', `attachment; filename=${filename}`);
        return res.status(200).send(file)
    } catch (err) {
        return res.send({ err: 'Problem reading file.', msg: err.toString() })
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...