zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Asp.Net的FileUpload类实现上传文件实例

Net实例文件ASP上传 实现 Fileupload
2023-06-13 09:15:30 时间

本文实例讲述了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;
     }
  }
}

希望本文所述对大家的asp.net程序设计有所帮助。