我想上传一个文件,我想将当前MVC HttpContext.Current.Request.Files传递给Web API。发送ASP.NET MVC HttpContext到Web Api HttpContext
我试图通过HttpFileCollectionBase
作为参数传递给API,但它总是空。 控制器
public object UploadAttachment(string param1, int param2, HttpFileCollectionBase files)
{
string _url = _restUrl + param1+ "/Folders/" + param2+ "/UploadAttachment";
HttpResponseMessage _response = SendJsonRequest(_url, HttpMethod.Post, files);
var ret = DeserializeResponse(_response);
return ret;
}
API代码:
[HttpPost]
[Route("Archives/{param1}/Folders/{param2}/UploadAttachment")]
public IHttpActionResult UploadAttachment([FromUri]string param1, [FromUri]int param2, [FromBody] HttpFileCollectionBase files)
查看代码
using (Ajax.BeginForm("UploadAttachment", null, new { param1 = Model.Param1 }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "uploadAttachmentSuccess" }, new { id = "uploadAttachment", enctype = "multipart/form-data" }))
{
<div class="row">
<div class="col-xs-10">
<div class="input-group">
<label class="input-group-btn" title="">
<span class="btn btn-primary">
<input type="file" name="file_upload" id="file_upload" style="display: none;" multiple />
Browse
</span>
</label>
<input type="text" id="file_upload_name" class="form-control" readonly>
</div>
</div>
<div class="col-xs-2">
<button type="submit" class="btn btn-success" data-toggle="tooltip" id="btn-submit-upload" title="" disabled>
Upload
</button>
</div>
</div>
<div class="row">
<div class="col-xs-12" id="warning-format">
</div>
</div>
}
SendJsonRequest实现
protected virtual HttpResponseMessage SendJsonRequest(string url, HttpMethod method, object objectToSerialize = null, bool tryToRefreshToken = true)
{
...
HttpRequestMessage _request = new HttpRequestMessage(method, _uri);
if (objectToSerialize != null)
{
string _serializedJSONObject = JsonConvert.SerializeObject(objectToSerialize);
_request.Content = new StringContent(_serializedJSONObject);
_request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
}...
您是否使用“文件”类型输入来浏览和上传文件? – Wheels73
是的,MVC操作检测到它,但是当我尝试从我的MVC控制器传递文件到Web Api控制器时,它变为空。 – Caloyski
你如何发布到控制器?阿贾克斯?你能发布你的视图/ ajax邮编吗? – Wheels73