最简单的fileupload控件上传图片例子
代码如下 | 复制代码 |
using System.IO; protected void Button1_Click(object sender, EventArgs e) { Boolean fileOk = false; //指定文件路径,pic是项目下的一个文件夹;~表示当前网页所在的文件夹 String path = Server.MapPath("~/");//物理文件路径 //文件上传控件中如果已经包含文件 if (FileUpload1.HasFile) { //得到文件的后缀 String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower(); //允许文件的后缀 String[] allowedExtensions ={ ".gif", ".png", ".jpeg", ".jpg", ".bmp" }; //看包含的文件是否是被允许的文件的后缀 for (int i = 0; i < allowedExtensions.Length; i++) { if (fileExtension == allowedExtensions[i]) { fileOk = true; } } } if (fileOk) { try { //文件另存在服务器的指定目录下 FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName); Response.Write("<script>alert('文件上传成功!');</script>"); } catch { Response.Write("<script>alert('文件上传失败!');</script>"); } } else { Response.Write("<script>alert('只能上传gif,png,jpeg,jpg,bmp图象文件!');</script>"); } } |
上面的没做文件大小判断只做了图片类型了,如果要判断大小我们需要如下设置
在web.config中配置:
代码如下 | 复制代码 |
<appSettings> <add key="FileType" value=".doc,.xls,.txt,.rar"/> <add key="PicTureTye" value=".jpg|.gif|.png|.bmp|.psd|.svg|"/> <add key="FileSizeLimit" value="10240"/> </appSettings> |
在.cs文件中方法实现:
文件大小判断:
代码如下 | 复制代码 |
public bool IsAllowableFileSize() { //从web.config读取判断文件大小的限制 double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]); //判断文件是否超出了限制 if (iFileSizeLimit > FileUpload1.PostedFile.ContentLength) { Response.Write("文件刚好"); return true; } else { Response.Write("文件太大"); return false; } } |
好了,看了上面我们看一个完整的例子
代码如下 | 复制代码 |
using System; using System.Collections.Generic; using System.Text; using System.Web.UI; using System.Web; using System.Web.UI.WebControls; using System.Collections; using System.Drawing; using System.Drawing.Imaging; using System.IO; namespace CSFramework.BLL { /// <summary> /// 支持上传的文件类型 /// </summary> public enum UploadFileType { ArticleAttachment = 1, Image = 2, Video = 3, All = 4 } /// <summary> /// 上传文件管理类 /// </summary> public class CFileUpload { private FileUpload _fileUpload; private string _savePath; private string _LastUploadedFile = string.Empty; private bool _AutoGenFileName = false; private bool _AutoGenWatermark = false; public string LastUploadedFile { get { return _LastUploadedFile; } } private string _Error = ""; private string PICTURE_FILE = "[.gif.png.jpeg.jpg]"; private int IMG_MAX_WIDTH = 700;//指定宽度 /// <summary> /// <summary> /// <summary> /// <summary> /// <summary> public bool UploadImage(int maxWidth, int maxHeight) /// <summary> /// <summary> /// <summary> private bool DoUpload(string allowedExtensions) if (!_fileUpload.HasFile) throw new Exception("没有文件!"); //上传控件中如果不包含文件,退出 // 得到文件的后缀 // 看包含的文件是否是被允许的文件后缀 //检查上传文件大小 try // 检查图片宽度/高度/大小 Bitmap bmp = new Bitmap(output); this.CreateDir(Path.GetDirectoryName(savefile)); bmp.Save(savefile, output.RawFormat); if (_AutoGenWatermark) _fileUpload.PostedFile.SaveAs(savefile); private void CreateDir(string dir) private bool IsUploadImage(string fileExtension) |
上面可以说己完整的介绍了利用 fileupload控件实现的单个文件上传了,如果要多文件上传呢怎么办?我们接着往下看。
同时上载多个文件cs处理代码
代码如下 | 复制代码 |
protected void Button1_Click(object sender, EventArgs e) { string filepath = "C:/Uploads"; //HttpFileCollection类型 HttpFileCollection uploadedFiles = Request.Files; for (int i = 0; i < uploadedFiles.Count; i++) { //HttpPostedFile类型 HttpPostedFile userPostedFile = uploadedFiles[i]; try { if (userPostedFile.ContentLength > 0 ) { Label1.Text += "File #" + (i+1) + ""; Label1.Text += "File Content Type: " + userPostedFile.ContentType + ""; Label1.Text += "File Size: " + userPostedFile.ContentLength + "kb"; Label1.Text += "File Name: " + userPostedFile.FileName + ""; userPostedFile.SaveAs(filepath + "/" + System.IO.Path.GetFileName(userPostedFile.FileName)); Label1.Text += "Location where saved: " + filepath + "/" + System.IO.Path.GetFileName(userPostedFile.FileName) + ""; } } catch (Exception Ex) { Label1.Text += "Error: " + Ex.Message; } } } |
同时多文件上传核心代码是int i = 0; i < uploadedFiles.Count; i++遍历了,其它的与单文件上传没有区别。