Открытие и скачивание файла

Кейс такой:

  • Имеются файлы с различным расширением
  • мне необходимо открыть в браузере файл если это возможно (например 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));
        });

то есть мой способ открытия работает, когда браузер может открыть файл он его открывает, а когда не может, то он его скачивает (сам). Но при скачивании название файла подается в виде хэш кода из ссылки и это проблема.

Мне же нужно либо доработать открытие так чтоб название файла подавалось такое какое я хочу, что я не знаю как сделать, либо в ручную в коде написать проверку на имеющееся расширение файла и определять открывать его или скачивать. Последнее я бы не хотел делать.

Есть ли какой нибудь способ чтоб браузер сам определял открывать его или скачивать и если скачивать то с нормальным названием.


Ответы (0 шт):