找了很长时间,终于找到了:
前台:
<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区别,成功。