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