我有HTML页面,我打电话给web api上传文件。我的客户端代码是:
<input name="file" type="file" id="load-image" />
<script>
...
var data = new FormData();
var files = $("#load-image").get(0).files;
data.append("UploadedImage", files[0]);
var ajaxRequest = $.ajax({
type: "POST",
url: "/UploadImage",
contentType: false,
processData: false,
data: data
});
服务器端代码:
public class FileUploadController : ApiController
{
[HttpPost]
public void UploadImage()
{
if (HttpContext.Current.Request.Files.AllKeys.Any())...
有效。现在我想在MVC项目中做同样的事情。我的客户端代码相同,但服务器端代码略有不同。
控制器的基类是Controller(不是api控制器),当我尝试这个时:
public class FileUploadController : ApiController
[HttpPost]
public void UploadImage()
{
if (HttpContext.Current.Request.Files.AllKeys.Any())
我收到'System.Web.HttpContextBase'不包含'Current'定义的错误......
我应该在MVC中更改哪些文件上传将与webApi中的相同? 客户端代码是一样的吗?
答案 0 :(得分:1)
此处有一个相关问题:System.Web.HttpContextBase' does not contain a definition for 'Current' MVC 4 with Elmah Logging
长话短说: Controller有一个自己的HttpContext.Current实现为
public HttpContextBase HttpContext { get; }
因此你应该使用:
System.Web.HttpContext.Current