asp.net mvc动态生成file控件批量上传文件

转载 2011年01月08日 16:08:00

页面代码:

<body>
    <div>
        <% using (Html.BeginForm("Upload", "File", FormMethod.Post, new { enctype = "multipart/form-data" }))
           { %>
        <div id="FileList">
            <div>
                <input type="file" id="file0" name="file0" />
            </div>
        </div>
        <p>
            <a onclick="AddFile();" style="color: Blue; text-decoration: underline">新增文件</a></p>
        <p>
            <input type="submit" value="上传" /></p>
        <%} %>
    </div>
</body>

 

js代码:(根据用户自动生成上传控件)

        var index = 1;
        function AddFile() {
            var ul = document.getElementById("FileList");
            var inputDiv = document.createElement("div");
            inputDiv.setAttribute("Id", "div" + index);
            var file = document.createElement("input");
            file.setAttribute("type", "file");
            file.setAttribute("id", "file" + index);
            file.setAttribute("name", "file" + index);
            var btnDel = document.createElement("input");
            btnDel.setAttribute("type", "button");
            btnDel.setAttribute("value", "删除");
            btnDel.setAttribute("Id", index);
            btnDel.onclick = function() {
                inputDiv.removeChild(file);
                inputDiv.removeChild(btnDel);
                ul.removeChild(inputDiv);
            }
            inputDiv.appendChild(file);
            inputDiv.appendChild(btnDel);
            ul.appendChild(inputDiv);
            index++;
        }

 

Controller的代码:

       [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Upload()
        {
            foreach (string item in Request.Files)
            {
                HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;
                if (file==null&&file.ContentLength == 0)
                    continue;
                //判断Upload文件夹是否存在,不存在就创建
                string path = Server.MapPath("..//Upload");
                if (!System.IO.Directory.Exists(path))
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                path = AppDomain.CurrentDomain.BaseDirectory + "Upload/";
                //获取上传的文件名
                string fileName = Path.GetFileName(file.FileName);
                //限制上传文件的类型
                if (Path.GetExtension(fileName)!=".doc")
                {
                    return Content("<script>alert('只能上传后缀名为.doc的文件');</script>");
                }
                //上传
                file.SaveAs(Path.Combine(path,fileName));
            }
            return Content("<script>alert('上传文件成功');window.history.back();</script>");
        }

相关文章推荐

ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

母版页(Master) 1.母版页是与Controller无关的,母版页只是一个View文件,而没有任何Controller与之相对应。 2.其实在ASP.NET MVC中View的aspx与母版...

asp.net mvc 、 ajax 批量上传文件

asp.net mvc 、 ajax 批量上传文件

asp.net mvc 利用uploadify实现批量上传

  • 2011年12月21日 14:27
  • 1.45MB
  • 下载

ASP.NET MVC diyUpload上传文件!

资源下载地址:http://download.csdn.net/detail/peiyuanxin/9555636 引用的JS 加CSS    ...

在ASP.NET MVC中实现大文件异步上传(2)

HttpWorkerRequest有VIP访问传入的请求,通常它是由ASP.NET本身支持工作的,但我们绑架了请求,然后欺骗剩下的请求,让它们误以为前面的请求已经全部得到处理,为了做到这一点,我们需要...

在ASP.NET MVC中实现大文件异步上传(1)

绝大多数人认为在ASP.NET中上传大文件有以下这些解决方案:◆不要这样做。你最好是在页面中嵌入一个Silverlight或Flash进程上传文件。◆不要这样做。因为HTTP本身设计就不是为了上传大文...

Asp.Net Mvc 使用jQuery实现Ajax文件上传

1. 实现传统的网络文件上传解决方案          首先,我先实现一个传统的网络文件上传方案,建立一个web页面,我还需要一个和两个元素就能解决问题,如在Index.aspx文件中有如下元素: ...

Asp.net mvc 的文件上传

代码下载:http://files.cnblogs.com/n-pei/mvcfileupload.zip   最近因为TeamVideo需要用到视频和图片上传功能,所以试着Google了很多资料,...
  • dz45693
  • dz45693
  • 2011年11月04日 13:19
  • 2582

ASP.NET MVC 文件上传和路径处理总结

目录 文件的上传和路径处理必须解决下面列出的实际问题: 1.重复文件处理 2.单独文件上传 3.编辑器中文件上传  4.处理文章中的图片路径 5.处理上传地址的变化...
  • my98800
  • my98800
  • 2017年01月09日 08:20
  • 162

ASP.NET MVC使用Uploadify上传文件

在VS2010中通过ASP.NET MVC使用uploadify上传文件
  • zlbcdn
  • zlbcdn
  • 2015年11月18日 14:08
  • 3099
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net mvc动态生成file控件批量上传文件
举报原因:
原因补充:

(最多只允许输入30个字)