多文件上传(.net)

找了很长时间,终于找到了:

前台:

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form runat="server" id="form1" method="post" enctype="multipart/form-data">
        <input name="f" type="file" multiple="multiple" />
        <input name="s" type="submit" />
    </form>
</body>
</html>

一直不知道  type="file"  还有  multiple="multiple" 属性,加入这个属性后可以一次性多选文件。

后台:

System.Web.HttpFileCollection _file = System.Web.HttpContext.Current.Request.Files;
            if (_file.Count > 0)
            {
                for (int i = 0; i < _file.Count; i++ )
                {
                    var fileS = _file[i];
                    //文件大小
                    long size = fileS.ContentLength;
                    //文件类型
                    string type = fileS.ContentType;
                    //文件名
                    string name = fileS.FileName;
                    //文件格式
                    string _tp = System.IO.Path.GetExtension(name);

                    if (_tp.ToLower() == ".jpg" || _tp.ToLower() == ".jpeg" || _tp.ToLower() == ".gif" || _tp.ToLower() == ".png" || _tp.ToLower() == ".swf")
                    {
                        //获取文件流
                        System.IO.Stream stream = fileS.InputStream;
                        //保存文件
                        string saveName = DateTime.Now.ToString("yyyyMMddHHmmss")+"_"+i.ToString() + _tp;
                        string path = Server.MapPath("upload/images/" + saveName);
                        fileS.SaveAs(path);
                    }
                }
            }
调试时
string saveName = DateTime.Now.ToString("yyyyMMddHHmmss") + _tp;
发现选择多个图片后,总是保存一张图片,但是F10单步调试后有两个,感觉很奇怪,
最后才发现是因为处理的时间太短,文件名一样,系统当成一个文件保存了。果断在后面加i区别,成功。

posted on 2017-06-01 09:07  bkin的笔记  阅读(137)  评论(0编辑  收藏  举报