Asp.Net的FileUpload类实现上传文件实例
本文实例讲述了Asp.Net的FileUpload类实现上传文件的方法。分享给大家供大家参考。
具体功能代码如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.Text; usingSystem.Web.UI; usingSystem.Web; usingSystem.Web.UI.WebControls; usingSystem.Collections; usingSystem.Drawing; usingSystem.Drawing.Imaging; usingSystem.IO;
namespaceCSFramework.BLL { ///<summary> ///支持上传的文件类型 ///</summary> publicenumUploadFileType { ArticleAttachment=1, Image=2, Video=3, All=4 } ///<summary> ///上传文件管理类 ///</summary> publicclassCFileUpload { privateFileUpload_fileUpload; privatestring_savePath; privatestring_LastUploadedFile=string.Empty; privatebool_AutoGenFileName=false; privatebool_AutoGenWatermark=false; publicstringLastUploadedFile{get{return_LastUploadedFile;}} privatestring_Error=""; privatestringPICTURE_FILE="[.gif.png.jpeg.jpg]"; privatestringZIP_FILE="[.zip.rar]"; privatestringMUILT_MEDIA_FILE="[.mpeg.mpg.fla.wma]"; privateintIMG_MAX_WIDTH=700;//指定宽度 privateintIMG_MAX_HEIGHT=0;//未指定高度 privateintMAX_SIZE_UPLOAD=1024;//最大支持上传小于1MB的文件。 ///<summary> ///构造器 ///</summary> ///<paramname="fileUpload">Asp.netFileUpload对象</param> ///<paramname="savePath">保存目录,不包含文件名</param> ///<paramname="autoGenFileName">自动生成文件名</param> publicCFileUpload(FileUploadfileUpload,stringsavePath,boolautoGenFileName,boolautoGenWatermark) { _savePath=savePath; _fileUpload=fileUpload; _AutoGenFileName=autoGenFileName; _AutoGenWatermark=autoGenWatermark; } ///<summary> ///构造器 ///</summary> ///<paramname="fileUpload">Asp.netFileUpload对象</param> ///<paramname="savePath">保存目录,不包含文件名</param> publicCFileUpload(FileUploadfileUpload,stringsavePath) { _savePath=savePath; _fileUpload=fileUpload; } ///<summary> ///上传RAR文件 ///</summary> publicboolUploadRARFile() { returnDoUpload(ZIP_FILE); } ///<summary> ///上传视频文件 ///</summary> publicboolUploadVideo() { returnDoUpload(MUILT_MEDIA_FILE); } ///<summary> ///上传图片文件 ///</summary> publicboolUploadImage() { returnDoUpload(PICTURE_FILE); } publicboolUploadImage(intmaxWidth,intmaxHeight) { this.IMG_MAX_WIDTH=maxWidth; this.IMG_MAX_HEIGHT=maxHeight; returnDoUpload(PICTURE_FILE); } ///<summary> ///上传任何支持的文件 ///</summary> publicboolUploadAnySupported() { returnDoUpload(PICTURE_FILEZIP_FILEMUILT_MEDIA_FILE); } ///<summary> ///生成新的文件名 ///</summary> privatestringGetNewFileName(stringfolder,stringfileName) { if(_AutoGenFileName)//自动生成32位GUID文件名 { stringext=System.IO.Path.GetExtension(fileName); stringnewfile=Guid.NewGuid().ToString().Replace("-","")ext; returnfoldernewfile; } else { if(System.IO.File.Exists(folderfileName)) { stringext=System.IO.Path.GetExtension(fileName); stringfilebody=fileName.Replace(ext,""); intx=1; while(true)//如果文件存在,生成尾部带(x)的文件 { stringnewfile=folderfilebody"("x.ToString()")"ext; if(!System.IO.File.Exists(newfile)) returnfolderfilebody"("x.ToString()")"ext; else x; } } else returnfolderfileName; } } ///<summary> ///最大支持小于1MB的文件。 ///</summary> privateboolAllowMaxSize(intfileLength) { doublekb=fileLength/1024; return(int)kb<MAX_SIZE_UPLOAD; } privateboolDoUpload(stringallowedExtensions) { try { boolfileOK=false; if(!_fileUpload.HasFile)thrownewException("没有文件!");//上传控件中如果不包含文件,退出 //得到文件的后缀 stringfileExtension=System.IO.Path.GetExtension(_fileUpload.FileName).ToLower(); //看包含的文件是否是被允许的文件后缀 fileOK=allowedExtensions.IndexOf(fileExtension)>0; if(!fileOK)thrownewException("不支持的文件格式!"); //检查上传文件大小 fileOK=AllowMaxSize(_fileUpload.FileBytes.Length); if(!fileOK)thrownewException("图片文件不能大于"MAX_SIZE_UPLOAD.ToString()"KB!"); try { //文件另存在服务器指定目录下 stringsavefile=GetNewFileName(_savePath,_fileUpload.FileName); if(IsUploadImage(fileExtension))//保存图片 { System.Drawing.Imageoutput=CImageLibrary.FromBytes(_fileUpload.FileBytes); //检查图片宽度/高度/大小 if(this.IMG_MAX_WIDTH!=0&&output.Width>this.IMG_MAX_WIDTH) { output=CImageLibrary.GetOutputSizeImage(output,this.IMG_MAX_WIDTH); } Bitmapbmp=newBitmap(output); this.CreateDir(Path.GetDirectoryName(savefile)); bmp.Save(savefile,output.RawFormat); bmp.Dispose(); output.Dispose(); if(_AutoGenWatermark) { WatermarkImagegenWatermark=newWatermarkImage(); genWatermark.DrawWords(savefile,AppConfig.Current.WatermarkMain, AppConfig.Current.WatermarkDesc,float.Parse("0.2")); } } else//其它任何文件 { this.CreateDir(Path.GetDirectoryName(savefile)); _fileUpload.PostedFile.SaveAs(savefile); } _LastUploadedFile=savefile; returntrue; } catch(Exceptionex) { thrownewException("上传文件时发生未知错误!"ex.Message); } } catch(Exceptionex) { _Error=ex.Message; returnfalse; } } privatevoidCreateDir(stringdir) { if(Directory.Exists(dir)==false) Directory.CreateDirectory(dir); } privateboolIsUploadImage(stringfileExtension) { boolisImage=PICTURE_FILE.IndexOf(fileExtension)>0; returnisImage; } } }