gpt4 book ai didi

c# - 图片从 HTTP 客户端上传到 C# Web Api

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:48 35 4
gpt4 key购买 nike

我正在尝试将图像从 ( DHC by Restlet) 上传到我的 C# API。将来我想从 Android 或 iPhone 应用程序调用此 API,但我认为在任何此类设备上实现它之前我需要这部分工作。

此 C# 代码放在我的 api:s ValuesController 中。我默认调用的 Controller 。我已确保(通过断点)可以访问并正确调用以下方法。

public async Task<HttpResponseMessage> PostFormData()
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}

string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);

try
{
// Read the form data.
await Request.Content.ReadAsMultipartAsync(provider);

// This illustrates how to get the file names.
foreach (MultipartFileData file in provider.FileData)
{
Trace.WriteLine(file.Headers.ContentDisposition.FileName);
Trace.WriteLine("Server file path: " + file.LocalFileName);
}
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}

.. 但是,当我尝试将 .png 发布到我的服务时出现以下错误:

System.IO.IOException was caught
HResult=-2146232800
Message=Unexpected end of MIME multipart stream. MIME multipart message is not complete.
Source=System.Net.Http.Formatting
StackTrace:
at System.Net.Http.Formatting.Parsers.MimeMultipartBodyPartParser.<ParseBuffer>d__0.MoveNext()
at System.Net.Http.HttpContentMultipartExtensions.MoveNextPart(MultipartAsyncContext context)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Nutris.Webapi.Controllers.ValuesController.<PostFormData>d__12.MoveNext() in c:\Users\Simon\Documents\GitHub\Nutris\Nutris.Webapi\Controllers\ValuesController.cs:line 836

内部异常:

它发生在行:

 await Request.Content.ReadAsMultipartAsync(provider);

我错过了什么?感觉我忘了提一下上面方法的mimetype。

最佳答案

检查发送数据的输入。

确保它的基本属性设置如下:

  • 姓名:
  • 类型:
  • 值(value):(我不认为这是必要的。)

    <input type="file" name="dataFile" value="Choose..."  multiple/>

这些都是 MIME 被认为是完整的并且可以由您的处理程序正确映射所必需的。

您应该发布代码的 HTML 端,以确保它是同一个问题。

关于c# - 图片从 HTTP 客户端上传到 C# Web Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22372448/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com