MVC文件上传

这次来看下一个MVC网站上传文件的功能,其中上传用到uploadify这个jquery插件,网上还有很多类似的,哪种都无所谓,能实现功能便行,貌似uploadify官网上的这个插件是要付费的,这里就顺便提供这个插件的下载地址如下:https://files.cnblogs.com/xmfdsh/uploadify3.2.zip

首先创建一个MVC的网站,新建一个文件夹名称为UpLoadiFy(这里可以随便起名称),来存放uploadify这个插件需要用到的js,css以及flash文件。如下图:

1

Home控制器有两个方法,Index和一个上传时插件传入的UpLoadFile方法。如下:

public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ContentResult UpLoadFile(HttpPostedFileBase fileData)
        {
            if (fileData != null && fileData.ContentLength > 0)
            {
                string fileSave = Server.MapPath("~/UpLoad/");
                //获取文件的扩展名
                string extName = Path.GetExtension(fileData.FileName);
                //得到一个新的文件名称
                string newName = Guid.NewGuid().ToString() + extName;
                fileData.SaveAs(Path.Combine(fileSave, newName));
            }
            return Content("");
        }

至于前台的话就只需要引用jquery的js和对应插件的js,css,便可。:

3

至于<script></script>里面的代码就如下了,通过初始化来实现上传功能,至于里面的参数可以去google一下uploadify这个插件的相关参数,下面的代码也注释了一下主要参数的作用。

<script type="text/javascript">
        $(function () {
            $('#Filedata').uploadify({
                fileObjName: 'Filedata',
                uploader: '/Home/UpLoadFile',           // 服务器端处理地址
            swf: '/UpLoadiFy/uploadify.swf',    // 上传使用的 Flash
            width: 60,                          // 按钮的宽度
            height: 23,                         // 按钮的高度
            buttonText: "上传",                 // 按钮上的文字
            buttonCursor: 'hand',                // 按钮的鼠标图标
            fileObjName: 'Filedata',            // 上传参数名称
            // 两个配套使用
            fileTypeExts: "*.jpg;*.png",             // 扩展名,限制扩展名,可按照自己想要的来设置
            fileTypeDesc: "请选择 jpg png 文件",     // 文件说明
            auto: true,                // 选择之后,自动开始上传
            multi: true,               // 是否支持同时上传多个文件
            queueSizeLimit: 5          // 允许多文件上传的时候,同时上传文件的个数
            });
        });
    </script>

这样便搞定了整个基本上传的功能,从前台的jquery插件选择了文件后,便会把这个文件的相关信息传入都控制器后台的UpLoadFile方法,然后再保存起来到指定的路径,如上面的代码我保存的是("~/UpLoad/");这个路径。运行效果如下:

4

 

5

 

posted @ 2014-09-23 17:16  晓镜水月  阅读(8170)  评论(0编辑  收藏  举报