AngularJS всегда загружает файлы, независимо от того, что настройки браузера - PullRequest
0 голосов
/ 04 июня 2018

У меня есть приложение NodeJS с внешним интерфейсом AngularJS.Если пользователь запрашивает файл, он передается из приложения узла в угловой интерфейс.Но внешний интерфейс всегда загружает файл, независимо от настроек браузера (например, Firefox настроен на открытие PDF-файлов вместо загрузки их по умолчанию).

Кодировка также следующая:

NodeJS

[...]
res.writeHead(200, {
    'Content-Type': file.mimetype,
    'Content-Disposition': `attachment; filename=${file.filename};`
    });
let readStream = BlobStore.createReadStream(fileId);

return readStream.pipe(res);
[...]

AngularJS HTML:

[...]
<a class="download-link" href="/api/files/{{file._id.toString()}}" target="_self" flex>
[...]

Я также пытался преобразовать поток в BLOB-объект, но это также не помогло мне.

1 Ответ

0 голосов
/ 05 июня 2018

Решение было довольно простым: согласно следующему документу к заголовку Content-Disposition (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) есть еще один параметр inline.

Поэтому все, что мне нужно было сделать, это изменить кодировку NodeJSдо:

[...]
res.writeHead(200, {
    'Content-Type': file.mimetype,
    'Content-Disposition': `inline; filename=${file.filename};`
    });
let readStream = BlobStore.createReadStream(fileId);

return readStream.pipe(res);
[...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...