Ошибка чтения тела запроса, содержащего PDF в функции Azure - PullRequest
1 голос
/ 11 октября 2019

У меня была функция Azure с триггером BLOB-объектов, которую я хотел использовать в приложении логики. Затем я понял, что в приложениях логики поддерживаются только функции лазера HTTP-триггера.

Я перенес код, который работал нормально в триггерной функции BLOB-объекта, в новую функцию Azure, активируемую http. Я заменил поток, полученный функцией триггера blob, для тела запроса в триггере http, но я не смог открыть pdf-файл, созданный этим потоком.

Функция триггера BLOB-объекта

public static void Run([BlobTrigger("attachments/{name}", Connection = "")]Stream blobPdf, string name, ILogger log)
{
    // Create MemoryStream
    var streamPdf = new MemoryStream();
    CopyStream(blobPdf, streamPdf);
    // Create PDF from MemoryStream
    var pdf = PdfReader.Open(streamPdf);
}

Функция триггера HTTP

public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)
{
        // Create MemoryStream
        var streamPdf = new MemoryStream();
        CopyStream(req.Body, streamPdf);
        // Create PDF from MemoryStream
        var pdf = PdfReader.Open(streamPdf);
}

При попытке открыть появляется ошибкаPDF в последней строке. Там есть 2 ошибки в зависимости от файла PDF. Первый из них:

System.Private.CoreLib: Exception while executing function: ExtractTextFromPDF. PdfSharp: Invalid PDF file: no trailer found.

Второй:

System.Private.CoreLib: Exception while executing function: ExtractTextFromPDF. PdfSharp: Unexpected token 'n' in PDF stream. The file may be corrupted. If you think this is a bug in PDFsharp, please send us your PDF file.

1 Ответ

0 голосов
/ 14 октября 2019

Проблема была в том, как отправить PDF в Почтальон. Binary вместо form-data решил проблему.

...