C# 使用HttpClient发布文件内容并获取结果
我已经发布了一个文本文件到使用formdata的MeWebAPI的action方法。当我发送文本文件时,它工作正常,但当我发送图像文件、视频文件或音频文件时,它不工作 投递电话: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()) {
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设置为您在客户端代码中发布的文件类型。