Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure functions 正在Blob存储绑定Azure函数中获取文件类型_Azure Functions_Azure Storage Blobs_Azure Blob Storage_Azure Blob Trigger - Fatal编程技术网

Azure functions 正在Blob存储绑定Azure函数中获取文件类型

Azure functions 正在Blob存储绑定Azure函数中获取文件类型,azure-functions,azure-storage-blobs,azure-blob-storage,azure-blob-trigger,Azure Functions,Azure Storage Blobs,Azure Blob Storage,Azure Blob Trigger,我正在创建一个Azure函数,该函数绑定到我的Azure Blob存储容器,并在上传文件时触发 此特定容器中可以包含任何类型的文件/blob,例如图像、PDF、Excel、MP4等 我想创建不同的处理程序,根据上传的文件类型进行处理。例如,如果它是一个图像文件,我想得到它的尺寸。如果是MP4,我想呼叫另一个服务来处理视频,等等 如何从流获取文件类型?需要注意的是,我不能依赖文件扩展名,因为在某些情况下,扩展名可能不存在。有没有办法让我获得mimetype 这是标准的BlogTriggerAzur

我正在创建一个Azure函数,该函数绑定到我的Azure Blob存储容器,并在上传文件时触发

此特定容器中可以包含任何类型的文件/blob,例如图像、PDF、Excel、MP4等

我想创建不同的处理程序,根据上传的文件类型进行处理。例如,如果它是一个图像文件,我想得到它的尺寸。如果是MP4,我想呼叫另一个服务来处理视频,等等

如何从
获取文件类型?需要注意的是,我不能依赖文件扩展名,因为在某些情况下,扩展名可能不存在。有没有办法让我获得
mimetype

这是标准的
BlogTrigger
Azure函数代码:

[FunctionName("FileManager")]
public static void Run([BlobTrigger("my-container/{name}", Connection = "myConnectionString")]Stream myBlob, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}

你可以得到这些属性

内容类型(如果在上载时设置)在
元数据
参数中返回

[FunctionName(“SomeFunction”)]
公共异步任务RunFunctionFaceDetection(
[BlobTrigger(“%PhotosContainerName%/{blobname}.{blobextension}”,Connection=“storage conn”)]流输入Blob,
字符串blobName,//blob name
字符串blobExtension,//blob扩展名-文件扩展名
string blobTrigger,//触发blob的完整路径
Uri,//blob主位置
IDictionary元数据)//用户定义的blob元数据
{
_logger.LogInformation($“RunFunctionWSFaceDetection刚刚启动…”);
_logger.LogInformation($@)
blobName{blobName}
blobExtension{blobExtension}
blobTrigger{blobTrigger}
uri{uri}
元数据{metaData.Count}”);
_logger.LogInformation($“C#Blob触发器函数已处理Blob\n名称:{blobName}\n大小:{inputBlob.Length}字节”);
}

您可以获得这些属性

内容类型(如果在上载时设置)在
元数据
参数中返回

[FunctionName(“SomeFunction”)]
公共异步任务RunFunctionFaceDetection(
[BlobTrigger(“%PhotosContainerName%/{blobname}.{blobextension}”,Connection=“storage conn”)]流输入Blob,
字符串blobName,//blob name
字符串blobExtension,//blob扩展名-文件扩展名
string blobTrigger,//触发blob的完整路径
Uri,//blob主位置
IDictionary元数据)//用户定义的blob元数据
{
_logger.LogInformation($“RunFunctionWSFaceDetection刚刚启动…”);
_logger.LogInformation($@)
blobName{blobName}
blobExtension{blobExtension}
blobTrigger{blobTrigger}
uri{uri}
元数据{metaData.Count}”);
_logger.LogInformation($“C#Blob触发器函数已处理Blob\n名称:{blobName}\n大小:{inputBlob.Length}字节”);
}

否,请使用CloudBlockBlob接收blob:

using System;
using System.IO;
using System.Text;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Blob;

namespace FunctionApp24
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("test/{name}", Connection = "str")] CloudBlockBlob myBlob, string name, ILogger log)
        {
            string a = myBlob.Properties.ContentType;
            log.LogInformation(a);
        }
    }
}
您可以使用以下代码将blob转换为流:

Stream stream = new MemoryStream();
myBlob.DownloadToStreamAsync(stream).Wait();

否,请使用CloudBlockBlob接收blob:

using System;
using System.IO;
using System.Text;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Blob;

namespace FunctionApp24
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("test/{name}", Connection = "str")] CloudBlockBlob myBlob, string name, ILogger log)
        {
            string a = myBlob.Properties.ContentType;
            log.LogInformation(a);
        }
    }
}
您可以使用以下代码将blob转换为流:

Stream stream = new MemoryStream();
myBlob.DownloadToStreamAsync(stream).Wait();

我认为您需要使用CloudBlockBlob来接收blob,然后您可以获得blob的mimetype。对于blob的流,可以通过DownloadToStreamAsync方法下载。请看一下我的答案。我认为您需要使用CloudBlockBlob来接收blob,然后您可以获得blob的mimetype。对于blob的流,可以通过DownloadToStreamAsync方法下载。请看一下我的答案。