使用ASP.NET MVC 3上传文件

3

我正在使用ASP.NET MVC 3暴露一些基于REST的服务。这些服务将通过JQuery以及Windows Phone Silverlight应用程序来访问。我知道如何与典型服务进行交互。例如,我目前有以下服务:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddComment(string username, string comment)
{
  // Do stuff
  return Json(new { message = "Success" });
}

我希望提供一项基于REST的服务,允许用户上传文件。关键在于,我还需要传递一些数据与每个文件一起。但是,我不确定该怎么做。我找到的每个例子都只有一个文件。但我不确定:
  1. 如何接受其他数据
  2. 从JQuery传递什么。
我传递的其他所有内容都是字符串。然而,在这种情况下,由于文件和一些字符串文本,我似乎将数据序列化为二进制格式。因此,我不确定该怎么做。我的意思清楚吗?

1
只是为了明确,您发布的示例代码不是RESTful。 - Maess
1
可能是重复的内容:在ASP.NET MVC中使用jQuery AJAX上传文件 - jrummell
我已经审查了“在ASP.NET MVC中使用jQuery ajax上传文件”的问题。在我看来,这个问题并不是那个问题的重复。 - user70192
1个回答

4

这个操作的签名只需要是:

public ActionResult MyAction(string username, string comment, HttpPostedFileBase file1) { ... }

MVC绑定应该检查请求,并根据参数名称和类型将表单提交与操作匹配。

客户端表单必须有enctype =“multipart/form-data”和方法POST。

JQuery只需使用$("#form").submit()提交表单即可。


如果我需要通过 $.ajax 调用 POST 图像怎么办? - user70192
1
@user70192,正如重复帖子中所解释的那样,您无法使用AJAX上传文件。因此,如果您必须这样做,可以使用客户端上传插件。或者使用HTML5文件API。 - Darin Dimitrov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接