簡體   English   中英

Azure 函數文件上傳和讀取內容

[英]Azure Function File Upload and Read Content

您好,我正在嘗試使用 Azure 函數的 Http 觸發器來接收上傳的文件並讀取所述文件。

IE。

public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] 
    HttpRequest req, ILogger log)

'req' 將是一個文件。

我如何讀取/解析請求? 該文件將是文本/word 文檔或 excel(猜測必須有兩個單獨的代碼塊來處理不同的媒體類型)。

編輯:上傳文件后,我想閱讀文件的內容:因此,如果文件顯示:“Hello World”,我該如何閱讀?

更新:

例如,如果我有一個 txt 文件:

在此處輸入圖片說明

我把它放在請求的正文中:

在此處輸入圖片說明

我將使用它來獲取數據:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace FunctionApp25
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string a = req.ContentType;
            string content = null;
            if (req.ContentType == "text/plain")
            {
                content = await new StreamReader(req.Body).ReadToEndAsync();
            }
            return new OkObjectResult(content);
        }
    }
}

我會得到數據:

在此處輸入圖片說明

原答案:

是的,但是我們首先要知道輸入的媒體類型。

只要獲取內容類型就可以了。

這是常見文件格式的內容類型:

.doc      application/msword
.dot      application/msword

.docx     application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx     application/vnd.openxmlformats-officedocument.wordprocessingml.template
.docm     application/vnd.ms-word.document.macroEnabled.12
.dotm     application/vnd.ms-word.template.macroEnabled.12

.xls      application/vnd.ms-excel
.xlt      application/vnd.ms-excel
.xla      application/vnd.ms-excel

.xlsx     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx     application/vnd.openxmlformats-officedocument.spreadsheetml.template
.xlsm     application/vnd.ms-excel.sheet.macroEnabled.12
.xltm     application/vnd.ms-excel.template.macroEnabled.12
.xlam     application/vnd.ms-excel.addin.macroEnabled.12
.xlsb     application/vnd.ms-excel.sheet.binary.macroEnabled.12

.ppt      application/vnd.ms-powerpoint
.pot      application/vnd.ms-powerpoint
.pps      application/vnd.ms-powerpoint
.ppa      application/vnd.ms-powerpoint

.pptx     application/vnd.openxmlformats-officedocument.presentationml.presentation
.potx     application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx     application/vnd.openxmlformats-officedocument.presentationml.slideshow
.ppam     application/vnd.ms-powerpoint.addin.macroEnabled.12
.pptm     application/vnd.ms-powerpoint.presentation.macroEnabled.12
.potm     application/vnd.ms-powerpoint.template.macroEnabled.12
.ppsm     application/vnd.ms-powerpoint.slideshow.macroEnabled.12

.mdb      application/vnd.ms-access

有關更多信息,只需搜索 MIME 類型。 確認文件類型后,只需使用一些包來處理數據。

例如,我在 req 正文中放了一個 docx 文件。

我可以這樣做來獲取 C# 中的內容類型:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace FunctionApp24
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string a = req.ContentType;

            return new OkObjectResult(a);
        }
    }
}

在此處輸入圖片說明

如果你需要一個函數處理不同類型的文件,只要把邏輯放在函數體中就可以得到內容類型,不同的類型去不同的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM