通过asp.net mvc中的jquery发布文件问题

时间:2010-08-09 08:13:31

标签: asp.net jquery asp.net-mvc ajax

当有人从文件上传中选择文件时,我想检查文件大小和文件类型,以便我使用

$('#fuEnglish1').live('change', function () { 
var form = $("#form11").serialize();
var myurl = '<%= Url.Action("CheckFileSizeandType", "Media") %>';
             $.ajax({
                     url: myurl,
                     type: "POST",
                     data: { Media: form },
                     success: function (mydata) {                    
                     }
             });
});

发布文件。但是当它发布到控制器方法时,Request.Files.Count等于0。 我做错了什么。

3 个答案:

答案 0 :(得分:2)

大多数浏览器都不允许您发送带有AJAX请求的文件。如果您想要跨平台的异步上传,则需要使用基于Flash,Java或iframe的上传器。对于非Flash上​​传器,请尝试使用Ajax UploadjQuery Form插件。

答案 1 :(得分:1)

请记住,表单encodingtype需要是“multipart / form-data”才能实际发布filecontent。不幸的是,我不认为$ .ajax支持不同的enctype,所以你有两个选择:

  1. 使表单同步
  2. 使用第三方异步上传组件,例如Uploadify(下载和文档:http://www.uploadify.com/
  3. 希望有所帮助!

答案 2 :(得分:0)

设置<httpRuntime maxRequestLength="YourFileSizeHere"/>正常上传文件并使用jQuery轮询MVC操作以获取错误或成功。

这不会解决ASP.NET必须上传整个文件的问题,然后才能访问任何对象的属性。出于安全原因,它也无法解决您无法通过JavaScript上传文件的问题,最接近的是通过Javascript将表单定位到iframe,这就是谷歌所做的。