作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如您所见,我正在尝试通过 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);
}
最佳答案
Is there a workaround to do this like using memory stream?
根据您的要求,我假设您可以使用HttpContentMultipartExtensions.ReadAsMultipartAsync您将获得 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()}");
}
此外,您可以关注此issue关于基于 MultipartMemoryStreamProvider
创建自定义 MultipartFormDataMemoryStreamProvider。还有这个issue关于基于 MultipartStreamProvider
构建自定义 InMemoryMultipartFormDataStreamProvider。
关于c# - 如何在C#中读取图像和文本值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47362349/
我是一名优秀的程序员,十分优秀!