Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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
C# 使用HttpClient发布文件内容并获取结果_C#_Image_Post_Asp.net Web Api - Fatal编程技术网

C# 使用HttpClient发布文件内容并获取结果

C# 使用HttpClient发布文件内容并获取结果,c#,image,post,asp.net-web-api,C#,Image,Post,Asp.net Web Api,我已经发布了一个文本文件到使用formdata的MeWebAPI的action方法。当我发送文本文件时,它工作正常,但当我发送图像文件、视频文件或音频文件时,它不工作 投递电话: using (var client = new HttpClient()) { using (var formData = new MultipartFormDataContent()) {

我已经发布了一个文本文件到使用formdata的MeWebAPI的action方法。当我发送文本文件时,它工作正常,但当我发送图像文件、视频文件或音频文件时,它不工作

投递电话:

 using (var client = new HttpClient())
                {
                    using (var formData = new MultipartFormDataContent())
                    {
                        HttpContent fileStreamContent = new StreamContent(new MemoryStream(fileStream));
                        formData.Add(fileStreamContent, "fileForUpload");
                        using (var response = await client.PostAsync("http://localhost:56537/api/CreateContainer/UploadBlobs", formData))
                        {
                            if (response.IsSuccessStatusCode)
                            {
                                var productJsonString = await response.Content.ReadAsStringAsync();
                            }
                        }
                    }
                } 
行动方法:

 try
            {
                if (!Request.Content.IsMimeMultipartContent())
                {
                    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
                }

                var provider = new MultipartMemoryStreamProvider();
                await Request.Content.ReadAsMultipartAsync(provider);
                var file = provider.Contents[0];
                objAzureFunctionClass.UploadBlobsToContainer(file.ReadAsStringAsync().Result, filenametoUpload, containerNametoUpload);
                return false;
            }



public bool UploadBlobsToContainer(string fileStream, string filenametoUpload, string containerNametoUpload)
    {
        try
        {
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference(containerNametoUpload);
            CloudBlockBlob blockBlob = container.GetBlockBlobReference(filenametoUpload);
            blockBlob.UploadFromStream(GenerateStreamFromString(fileStream));
            return true;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private Stream GenerateStreamFromString(String p)
    {
        MemoryStream stream = new MemoryStream();
        StreamWriter writer = new StreamWriter(stream);
        writer.Write(p);
        writer.Flush();
        stream.Position = 0;
        return stream;
    }

动作方法签名在哪里?看起来它只适用于文本文件,因为在动作方法try块中以字符串形式读取文件,代码为ReadAsStringAsync。您可能希望读取ASSTREAMASYNC INSTEAD,但同时也将fileStreamContent.Headers.ContentType设置为您在客户端代码中发布的文件类型。