如何在C#中读取图像和文本值?

如何在C#中读取图像和文本值?,c#,function,azure,post,C#,Function,Azure,Post,如您所见,我试图通过POST命令向本地函数发送一个图像和一个名称 如何在C#中读取这两个参数 这是我尝试过的,但它只能读取文件图像 [FunctionName("Test")] public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req

如您所见,我试图通过POST命令向本地函数发送一个图像和一个名称

如何在C#中读取这两个参数

这是我尝试过的,但它只能读取文件图像

   [FunctionName("Test")]
public static async Task<HttpResponseMessage> 
     Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = 
 null)]HttpRequestMessage req, TraceWriter log)
{
    //Check if the request contains multipart/form-data.
    if (!req.Content.IsMimeMultipartContent())
    {
        return req.CreateResponse(HttpStatusCode.UnsupportedMediaType);
    }


  foreach (var stream in contents.Contents)
    {


        try
        {
            var fileBytes = await stream.ReadAsByteArrayAsync();
            var fileinfo = new FileInfo(stream.Headers.ContentDisposition.FileName.Trim('"'));



         //Can Read File image like this.


        }
        catch(Exception e)
        {
            return req.CreateErrorResponse(HttpStatusCode.Conflict, e);
        }
[函数名(“测试”)]
公共静态异步任务
运行([HttpTrigger(AuthorizationLevel.Anonymous,“获取”、“发布”,路由=
null)]HttpRequestMessage请求,TraceWriter日志)
{
//检查请求是否包含多部分/表单数据。
if(!req.Content.IsMimeMultipartContent())
{
返回请求CreateResponse(HttpStatusCode.UnsupportedMediaType);
}
foreach(contents.contents中的变量流)
{
尝试
{
var fileBytes=await stream.ReadAsByteArrayAsync();
var fileinfo=newfileinfo(stream.Headers.ContentDisposition.FileName.Trim(“”);
//可以像这样读取文件图像。
}
捕获(例外e)
{
返回请求CreateErrorResponse(HttpStatusCode.Conflict,e);
}

您可以使用
MultipartFormDataStreamProvider

  • 使用
    FileData
    属性获取发布的文件
  • 使用
    FormData
    属性获取基于键发布的任何表单数据的值
  • 看看这个

    有没有一种解决方法可以像使用内存流一样做到这一点

    根据您的要求,我假设您可以使用并获得
    MultipartMemoryStreamProvider
    ,然后您可以利用以下代码读取上载的文件:

    var multipartMemoryStreamProvider= await req.Content.ReadAsMultipartAsync();
    foreach (HttpContent content in multipartMemoryStreamProvider.Contents)
    {  
       // for reading the uploaded file
       var filename= content.Headers.ContentDisposition.FileName.Trim('"');
       var stream=await content.ReadAsStreamAsync();          
    
       //for formdata, you could check whether `content.Headers.ContentDisposition.FileName` is empty
       log.Info($"name={content.Headers.ContentDisposition.Name},value={await content.ReadAsStringAsync()}");
    }
    

    此外,您可以按照以下步骤创建基于
    MultipartMemoryStreamProvider
    的自定义MultipartFormDataMemoryStreamProvider。以及基于
    MultipartStreamProvider
    的自定义InMemorySmultipartFormDatastreamProvider。我必须使用此方法将文件保存到应用程序文件夹。有什么工作要做吗如何使用内存流这样做?