Отобразите PDF-файл из BLOB-объекта Azure в браузерах, используя Microsoft Azure Storage SDK для Node.js и JavaScript для браузеров. - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь использовать Microsoft Azure Storage SDK для Node.js и JavaScript для браузеров (https://github.com/Azure/azure-storage-node) для отображения содержимого PDF, хранящегося в BLOB-объекте Azure, в браузерах. До сих пор я не нашел примеров того, каксделайте это.

Я пытался следовать предложению https://github.com/Azure/azure-storage-node/issues/440,, но не смог заставить его работать. Я использую функцию Azure.

module.exports = async function (context, req) {

    let accessToken = await getAccessToken();

    let container = req.params.container;
    let filename = req.params.filename;
    let tokenCredential = new azure.TokenCredential(accessToken);
    let storageAccountName = process.env.StorageAccountName;
    let blobService = azure.createBlobServiceWithTokenCredential(`https://${storageAccountName}.blob.core.windows.net/`, tokenCredential);

    return new Promise((resolve, reject) => {
        let readStream = blobService.createReadStream(container, filename, function (error, result, response) {

                if (error) {
                    context.log(error);
                    context.log(response);
                    context.res = {
                        status: 400,
                        body: response
                    };
                    resolve(context.res);
                } 
        });

        let body = '';
        readStream.on('data', (chunk) => { 
            body += chunk;
        });

        readStream.on('end', () => { 
            context.res = {
                headers: {
                    'Content-Type': "application/pdf"
                },
                body: body
            };
            resolve(context.res);
        });
    });
};

Но я получил "Не могу"сообщение об ошибке "Не открывать PDF" в браузере или ошибка времени ожидания.

1 Ответ

0 голосов
/ 27 августа 2018

Для загрузки BLOB-объектов в среде браузера рекомендуется использовать URL-адрес с SAS, а в используемой среде будет достаточно доступного URL-адреса, указывающего на PDF?

Пожалуйста, следуйте примеру :

Загрузка Blob BlobService предоставляет интерфейсы для загрузки BLOB-объектов в память браузера.Из-за ограничений в изолированной программной среде браузера мы не можем сохранять загруженные стволы данных на диск, пока не получим все стволы данных большого двоичного объекта в память браузера.Объем памяти браузера также ограничен, особенно для загрузки огромных больших двоичных объектов, поэтому рекомендуется загружать большие двоичные объекты в браузер с помощью авторизованной ссылки SAS Token.

Подписи общего доступа (SAS) являются безопасным способом обеспеченияДетальный доступ к BLOB-объектам и контейнерам без указания имени учетной записи или ключей.Подписи общего доступа часто используются для предоставления ограниченного доступа к вашим данным, например, для предоставления мобильному приложению доступа к BLOB-объектам.

...