我目前正在使用Web API开发REST Web服务。
现在我试图通过帖子接收流文件和对象。
当我发送它没有JobPosition对象时,我正确地收到了文件,也当我发送JobPosition没有文件时,我正确地收到了JobPosition。
但是当我通过邮递员发送流文件和对象时,我收到了错误。
我将感谢您的帮助,了解这是否可能,如果可能的话,方向将帮助我。
public class JobPosition
{
public int Id { set; get; }
public string Title { set; get; }
}
[HttpPost]
[Route("Job")]
public async Task<bool> Post(JobPosition job)
{
var multipartMemoryStreamProvider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(multipartMemoryStreamProvider, new CancellationToken());
var stream = await multipartMemoryStreamProvider.Contents[0].ReadAsStreamAsync();
// implementaion
return true;
}
我尝试了所有可能的内容类型组合,但没有成功。
如果您正在使用。NET core,你能试试这个吗?
public class JobPosition
{
public int Id { set; get; }
public string Title { set; get; }
public IFormFile jobFile {set; get; }
}
[HttpPost]
[Route("Job")]
public async Task<bool> Post(JobPosition job)
{
if (!Request.ContentType.Contains("multipart/form-data"))
{
return BadRequest();
}
// your implementation
// you can access the file by job.jobFile
// you can read the contents of the file by opening a read stream from the file object and read it to a byte[]
return true;
}
更多关于IFormFile的信息。
也许您可以使用MultipartFormDataStreamProvider提供的FormData来提取JobPosition。
public async Task<IHttpActionResult> PostUploadFile()
{
// 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);
NameValueCollection formdata = provider.FormData;
JobPosition jobPosition = new JobPosition()
{
Id = formdata["Id"],
Title = bool.Parse(formdata["Title"])
};
foreach (MultipartFileData file in provider.FileData)
{
var fileName = file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty);
byte[] documentData = File.ReadAllBytes(file.LocalFileName);
/// Save document documentData to DB or where ever
/// --- TODO
}
return Ok(jobPosition);
}
catch (System.Exception e)
{
return BadRequest(e.Message);
}
}
删除(JobPosition作业)
操作函数参数,改为通过multipartMemoryStreamProvider
对象使用自己的代码读取该参数。
await multipartMemoryStreamProvider.Contents[0].ReadAsStreamAsync(); //Stream
await multipartMemoryStreamProvider.Contents[1].ReadAsStreamAsync(); //JSON
类似的东西。顺序很重要。最好是假设它可以以任何顺序出现,循环处理Contents集合,并根据变量的名称进行处理。
我是ASP的新手。网我对POST请求有问题。也许我的代码错了,我找不到在哪里! 当我尝试post请求时,Postman会向我发送错误消息: "ExceptionType":"System.网。http://http.不支持的媒体类型异常","StackTrace":"àSystem.网。http://http.HttpContent扩展。ReadAsAsync[T](HttpContent内容,类
问题内容: 我们制作了一个AngularJS应用,其中用户打开一个URL(xyz.com/booking)填写表格,然后选择一些要购买的物品。 之后,该用户单击“购买”按钮,并离开该站点进入支付网关站点。成功付款后,Payment Gateway会通过在回调URL(xyz.com/booking- success)上发送POST请求来发回用户。 现在的问题是,我为该回调URL配置的相应Angula
问题内容: 如何从CherryPy中的POST请求接收JSON? 我去过此页面,尽管它在解释API,其参数及其作用方面做得很好。我似乎无法弄清楚如何使用它们将传入的JSON解析为一个对象。 这是我到目前为止的内容: 而且,这是我的jquery调用以发布帖子 问题答案: 工作示例: 链接到的文档介绍了3.2版中的几个CherryPy工具。该工具基本上可以更严格地完成上述操作,并使用3.2中的新主体处
我正在使用RestTemplate方法将请求发布到endpoint。我在不同的文件中有和,我想把它们传递给POST请求,除此之外,我还想把传递给endpoint。 我能够成功地传递头和请求,但不能传递包含凭据的Http实体 有没有办法让我三样东西都及格 > HttpHeader 要求 这是我的密码 以下代码位于NewHttpHeader中。包含和
问题内容: 我正在尝试使用Socket处理Java中的简单POST请求。我可以接收请求标头并毫无问题地回答请求,但是我当然无法获取请求的正文。 我读过某个地方,我需要打开第二个InputStream来达到这个目的,但这对我来说真的没有意义。您对如何获取请求正文有任何建议吗? 这是我基本上用来获取标头的内容: 因此,我收到的消息是这样的: 但是我无法获取POST请求的参数。 编辑: 因此事实证明,我
问题内容: 如何通过JavaScript发送跨域POST请求? 注意-它不应该刷新页面,之后我需要抓取并解析响应。 问题答案: 如果你控制要发布的服务器,只需在服务器上设置响应头即可利用“跨域资源共享标准”。此答案在该主题的其他答案中进行了讨论,但我认为不是很清楚。 简而言之,这里是如何完成从from.com/1.html到to.com/postHere.php的跨域POST(以PHP为例)。注意