我有个问题,但我看不出我做错了什么?我想用最简单的方法来实现这一点,稍后我会让它变得更复杂,但现在我只想点击post方法,我甚至不在乎里面的代码当前是否正常工作。
我唯一关心的是它会发回一个OK 200的回复。
目前,我收到一个内部服务器错误500响应或405方法不允许响应,具体取决于我是尝试发送数据还是仅使用浏览器强制方法调用。
有一个IOS应用程序发送下面的post请求,我有一个测试PHP脚本证明了这一点。现在我想把它移到应该在IIS8上执行工作的服务器上。然而,目前我甚至连建立连接都很困难:
POST /api/Image/Upload HTTP/1.1
Host: ServerName
Content-Type: multipart/form-data; boundary=-------------Boundary----------35042EC1-790C-4CDD-8E21-66E6B1025C2D
Connection: keep-alive
Accept: */*
filename: DefaultPrefix1.jpg
User-Agent: KameraApp/1 CFNetwork/808.3 Darwin/16.3.0
Content-Length: 5492253
Accept-Language: da-dk
Accept-Encoding: gzip, deflate
---------------Boundary----------35042EC1-790C-4CDD-8E21-66E6B1025C2D
Content-Disposition: form-data; name='image'; filename="DefaultPrefix1.jpg"
Content-Type: image/jpg
Image Data
End boundary
我如何尝试拾取上面的Multipart/form-data:
[RoutePrefix("api/Image")]
public class ImageController : ApiController
{
[HttpPost]
[Route("Upload")]
public IHttpActionResult Upload()
{
var files= HttpContext.Current.Request.Files;
var aFile = files.Get(0);
string filename = aFile.FileName;
string path = @"C:\ImageUploaderService\UploadFolder";
aFile.SaveAs(path + filename);
return Ok("Working");
}
}
编辑:
根据以下建议更改为当前方法
我的WebApiConfig如下所示:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这是一个路由问题。如果打算使用属性路由,请确保已启用该属性路由
public static class WebApiConfig {
public static void Register(HttpConfiguration config) {
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
并对目标控制器进行相应的装饰
[RoutePrefix("api/Image")]
public class ImageController : ApiController {
[HttpPost]
[Route("Upload")] // Matches POST api/Image/Upload
public IHttpActionResult Upload()
{
return Ok("I am working");
}
}
从那里,您应该能够包含您的附加功能。
如果您想读取多部分数据,请考虑从请求的内容中获取数据。
var content = await Request.Content.ReadAsMiltipartAsync();
我唯一关心的是它会发回一个OK 200的回复。
我想用最简单的方法来实现这一点,稍后我会让它变得更复杂,但现在我只想点击post方法,我甚至不在乎里面的代码当前是否正常工作。
这个答案应该解决上述问题。任何进一步的问题应张贴在其他问题。
通常,我需要通过JSOUP将数据以响应multipart/form-data的形式发送到站点 作为一个示例,使用一个简单的窗体来sgeniriruet您的查询。 <表单操作=«localhost:8000»方法=«post»enctype=»多部分/表单数据» <输入类型=»文本»名称=»文本»值=»文本默认值» <输入类型=»文件»名称=»文件1» <输入类型=»文件»名称=»文件2» 提交 通
问题内容: 我熟悉该界面,但是使用起来很笨拙。例如,为了找出表名,您必须使用众所周知的文字作为列名来调用并循环返回。 有没有更简单的方法来获取数据库元数据? 问题答案: 使用DdlUtils很容易做到:
我收到第三方对我的laravel post API的请求,其中包含两个表单数据(ID、文件)和标题(内容类型多部分/表单数据) 在laravel控制器中,在
本文向大家介绍Javaweb获取表单数据的多种方式,包括了Javaweb获取表单数据的多种方式的使用技巧和注意事项,需要的朋友参考一下 Javaweb获取表单数据的几种方式 一、通过键值对的形式获取表单数据 getParameter(String name):通过key,返回一个value。 getParameterValues(String name):通过key返回一个string数组(多个值
没有边界的多部分/表单数据请求是否有效?根据规范,当有超过1个部分时,使用边界将它们分开(并且该边界不应该是身体的一部分)。我有一个请求,其中有一个单一的主体作为原始内容或文件,在内容类型中,我们传递“多部分/表单数据”。这种要求实际上有效吗?
我目前正在尝试解析我通过Chrome中的Postman插件发送的。然而,我得到的输出如下: 当我尝试调试时,会得到这个输出。当我尝试时,我得到一个空数组,所以我假设数据的格式不正确(只是一个字符串)。在我写我自己的算法之前,我想确定我没有用这个算法重新发明轮子。我做错什么了?或者,如果没有,是否存在一些CakePHP3函数来处理这个问题? 更新 我发现了代码中的错误,路由过程似乎以某种方式将pos