Загрузка pdf на angular сервер - PullRequest
0 голосов
/ 27 мая 2020

Вначале опишу пока что процесс. Я использую jspdf в моем интерфейсе angular, и как только у меня есть PDF-файл, мне нужно отправить его на свой сервер и загрузить на сервер, который его хранит. До сих пор я перепробовал множество различных вариантов rnet, и ни один из них, похоже, не работает. Сначала я отправляю объект pdf через маршрутизатор angular, но он был слишком большим, поэтому были отправлены не все данные. Я изменил размер разрешенных данных, но, похоже, это не сработало. если вам нужен код, я загружу его, но это не моя главная мысль. После этого я создал как объект blob, так и файл pdf base64 и отправил их на сервер, и они отображаются полностью и правильно. Однако я не хочу показывать PDF-файл, я просто хочу его скачать. Большинство ответов, которые я видел до сих пор, включают документ или окно, которые я не могу использовать, потому что мне просто нужно его загрузить. Любой ответ на преобразование blob или base64 в pdf и загрузку подойдет. Я загружаю код base64, который является последним, который я пробовал со стороны сервера, хотя кода не так много, так как я не смог найти никакого решения, но чтобы вы видели формат:

public async sendemail (req: Request, res: Response): Promise<any> {
var base64=req.body.base64;
console.log(base64);
}

Отсюда мне нужно скачать файл base64 в формате pdf. Спасибо.

1 Ответ

0 голосов
/ 13 августа 2020

Эта модификация вашей функции использует новый (i sh) fetch api, чтобы получить изображение base64 в виде большого двоичного объекта и затем загрузить его.

public async sendemail (req: Request, res: Response): Promise<any> {
    var base64=req.body.base64;

    fetch("data:image/png;base64," + base64)
        .then(res => res.blob())
        .then(blob => {
            if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                window.navigator.msSaveOrOpenBlob(blob, "download.pdf");
            } else {
                const link = document.createElement("a");
                link.href = window.URL.createObjectURL(blob);
                link.download = "download.pdf";
                document.body.appendChild(link);
                link.click();
            }
        });
}
...