Открытие и скачивание файла
Кейс такой:
- Имеются файлы с различным расширением
- мне необходимо открыть в браузере файл если это возможно (например pdf, картинки, txt и т.д.), иначе нужно его скачать.
- ссылку на файл можно сгенерировать только на фронте (vue js). Мне известен только способ с использованием
createObjectURL - то что я пытаюсь сделать уже работает например в ВК (у тех разработчиков хватило ума это сделать).
По отдельности я это делаю так:
скачивание
await Global.exportAttachment(idAttachment).then(resp => {
let blob = new Blob([resp.data], {type: resp.headers["content-type"]});
let link = document.createElement("a")
link.href = window.URL.createObjectURL(blob);
link.download = Global.getFileName(resp.headers["x-content-original-name"])
link.click();
});
открытие
await Global.exportAttachment(idAttachment).then(resp => {
let blob = new Blob([resp.data], {type: resp.headers["content-type"]});
window.open(window.URL.createObjectURL(blob));
});
то есть мой способ открытия работает, когда браузер может открыть файл он его открывает, а когда не может, то он его скачивает (сам). Но при скачивании название файла подается в виде хэш кода из ссылки и это проблема.
Мне же нужно либо доработать открытие так чтоб название файла подавалось такое какое я хочу, что я не знаю как сделать, либо в ручную в коде написать проверку на имеющееся расширение файла и определять открывать его или скачивать. Последнее я бы не хотел делать.
Есть ли какой нибудь способ чтоб браузер сам определял открывать его или скачивать и если скачивать то с нормальным названием.