使用jQuery上传文件拖放ASP.NET MVC4

时间:2013-03-30 22:57:47

标签: jquery ajax asp.net-mvc-4 drag-and-drop

我对AJAX几乎没有(几乎没有)经验。

我想创建一个示例表单,我可以上传图像文件(想想eBay拍卖),但这些文件可以(并且应该)拖放到浏览器窗口,就像将APK上传到Google Play一样。< / p>

我从未做过这样的事情,我想学习。我目前没有真正的用例来实现,我要求学习。所以,让我们选择eBay的例子。

我的ViewModel可能如下所示:

public class AuctionViewModel {

    public string Title, Description;
    public double Price;
    [...]
    public IEnumerable<Picture> Images; //most important part!
}

public class Picture {
    public string Url; //display URL, perhaps to be generated
    public byte[] payload; //uploaded data
}

问题点:

  1. 控制器如何?我想我需要一个单独的AJAX上传控制器(ViewModel应该存储在Session中)
  2. Javascript客户端代码如何?
  3. 是否有关于jQuery / AJAX / MVC4中可拖动和可放置文件的任何教程?

1 个答案:

答案 0 :(得分:0)

您可以使用HTML5 File API。它允许您订阅DOM元素的drop事件,并能够检索文件内容并使用XmlHTTPRequest对象将文件异步发送到服务器。我发布的Mozilla链接包含大量示例。

在服务器端,您可能会考虑将IEnumerable<HttpPostedFileBase>用于上传的文件有效内容,而不是byte[]。如果您使用带有AJAX请求的multipart/form-data内容类型,如示例所示,默认模型绑定器将自动将上载的文件绑定到模型。