2010-08-09 57 views
0

发布文件,我想检查文件大小和文件类型时,有人选择从文件上传文件,以便为我使用问题通过的jQuery在asp.net mvc的

$('#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. 什么即时通讯做错了。

+4

你真的愿意发送一个完整的文件到服务器只是为了检查其大小? – ggarber 2010-08-09 08:24:38

+0

是的,我可以发送完整的文件,但我想检查它的大小和类型之前保存 – 2010-08-09 08:32:13

+1

@gustavogb:那你最喜欢的sugesstion – 2010-08-09 08:39:16

回答

1

请记住,encodingtype格式需要是“multipart/form-data”才能真正发布文件内容。不幸的是,我不认为$就支持不同enctypes,所以你有两个选择:

  1. 使窗体同步
  2. 使用第三方异步上传组件像Uploadify(这里下载和文档:http://www.uploadify.com/

希望有所帮助!

+0

form11的enctype定义为“multipart/form-data”,但它不起作用 – 2010-08-09 13:38:39

+0

正如我所说的,我不认为$ .ajax支持开箱即用。你需要一个jQuery插件.. – 2010-08-09 14:19:45

2

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

0

设置<httpRuntime maxRequestLength="YourFileSizeHere"/>正常上传文件,并使用jQuery轮询MVC Action以报错或成功。

这不会解决ASP.NET在访问任何对象属性之前必须上传整个文件的问题。它也不会解决无法通过JavaScript上传文件的问题,因为安全原因,您可以通过JavaScript将该表单定位到iframe,这就是Google所做的。