麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

Asp.Net的FileUpload類實(shí)現(xiàn)上傳文件實(shí)例

2024-07-10 13:28:26
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Asp.Net的FileUpload類實(shí)現(xiàn)上傳文件的方法,以實(shí)例形式講述了上傳文件類的具體實(shí)現(xiàn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下
 
 

本文實(shí)例講述了Asp.Net的FileUpload類實(shí)現(xiàn)上傳文件的方法。分享給大家供大家參考。

具體功能代碼如下:

 

復(fù)制代碼代碼如下:
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 string ZIP_FILE = "[.zip.rar]";
      private string MUILT_MEDIA_FILE = "[.mpeg.mpg.fla.wma]";
      
      private int IMG_MAX_WIDTH = 700;//指定寬度
      private int IMG_MAX_HEIGHT = 0;//未指定高度
      private int MAX_SIZE_UPLOAD = 1024;//最大支持上傳小于1MB的文件。
      
      /// <summary>
      /// 構(gòu)造器
      /// </summary>
      /// <param name="fileUpload">Asp.net FileUpload對(duì)象</param>
      /// <param name="savePath">保存目錄,不包含文件名</param>
      /// <param name="autoGenFileName">自動(dòng)生成文件名</param>
      public CFileUpload(FileUpload fileUpload, string savePath, bool autoGenFileName, bool autoGenWatermark)
      {
         _savePath = savePath;
         _fileUpload = fileUpload;
         _AutoGenFileName = autoGenFileName;
         _AutoGenWatermark = autoGenWatermark;
      }
      
      /// <summary>
      /// 構(gòu)造器
      /// </summary>
      /// <param name="fileUpload">Asp.net FileUpload對(duì)象</param>
      /// <param name="savePath">保存目錄,不包含文件名</param>
      public CFileUpload(FileUpload fileUpload, string savePath)
      {
         _savePath = savePath;
         _fileUpload = fileUpload;
      }
      
      /// <summary>
      /// 上傳RAR文件
      /// </summary>
      public bool UploadRARFile()
      {
         return DoUpload(ZIP_FILE);
      }
      
      /// <summary>
      /// 上傳視頻文件
      /// </summary>
      public bool UploadVideo()
      {
         return DoUpload(MUILT_MEDIA_FILE);
      }
      
      /// <summary>
      /// 上傳圖片文件
      /// </summary>
      public bool UploadImage()
      {
         return DoUpload(PICTURE_FILE);
      }
      
      public bool UploadImage(int maxWidth, int maxHeight)
      {
         this.IMG_MAX_WIDTH = maxWidth;
         this.IMG_MAX_HEIGHT = maxHeight;
         return DoUpload(PICTURE_FILE);
      }
      
      /// <summary>
      /// 上傳任何支持的文件
      /// </summary>
      public bool UploadAnySupported()
      {
         return DoUpload(PICTURE_FILE ZIP_FILE MUILT_MEDIA_FILE);
      }
      
      /// <summary>
      /// 生成新的文件名
      /// </summary>
      private string GetNewFileName(string folder, string fileName)
      {
         if (_AutoGenFileName) //自動(dòng)生成32位GUID文件名
         {
            string ext = System.IO.Path.GetExtension(fileName);
            string newfile = Guid.NewGuid().ToString().Replace("-", "") ext;
            return folder newfile;
         }
         else
         {
            if (System.IO.File.Exists(folder fileName))
            {
               string ext = System.IO.Path.GetExtension(fileName);
               string filebody = fileName.Replace(ext, "");
               
               int x = 1;
               while (true) //如果文件存在,生成尾部帶(x)的文件
               {
                  string newfile = folder filebody "(" x.ToString() ")" ext;
                  if (!System.IO.File.Exists(newfile))
                  return folder filebody "(" x.ToString() ")" ext;
                  else
                  x ;
               }
            }
            else
            return folder fileName;
         }
      }
      
      /// <summary>
      /// 最大支持小于1MB的文件。
      /// </summary>
      private bool AllowMaxSize(int fileLength)
      {
         double kb = fileLength / 1024;
         return (int)kb < MAX_SIZE_UPLOAD;
      }
      
      private bool DoUpload(string allowedExtensions)
      {
         try
         {
            bool fileOK = false;
            
            if (!_fileUpload.HasFile) throw new Exception("沒有文件!"); //上傳控件中如果不包含文件,退出
            
            // 得到文件的后綴
            string fileExtension = System.IO.Path.GetExtension(_fileUpload.FileName).ToLower();
            
            // 看包含的文件是否是被允許的文件后綴
            fileOK = allowedExtensions.IndexOf(fileExtension) > 0;
            if (!fileOK) throw new Exception("不支持的文件格式!");
            
            //檢查上傳文件大小
            fileOK = AllowMaxSize(_fileUpload.FileBytes.Length);
            if (!fileOK) throw new Exception("圖片文件不能大于" MAX_SIZE_UPLOAD.ToString() "KB!");
            
            try
            {
               // 文件另存在服務(wù)器指定目錄下
               string savefile = GetNewFileName(_savePath, _fileUpload.FileName);
               
               if (IsUploadImage(fileExtension))//保存圖片
               {
                  System.Drawing.Image output = CImageLibrary.FromBytes(_fileUpload.FileBytes);
                  
                  // 檢查圖片寬度/高度/大小
                  if (this.IMG_MAX_WIDTH != 0 && output.Width > this.IMG_MAX_WIDTH)
                  {
                     output = CImageLibrary.GetOutputSizeImage(output, this.IMG_MAX_WIDTH);
                  }
                  
                  Bitmap bmp = new Bitmap(output);
                  
                  this.CreateDir(Path.GetDirectoryName(savefile));
                  
                  bmp.Save(savefile, output.RawFormat);
                  bmp.Dispose();
                  output.Dispose();
                  
                  if (_AutoGenWatermark)
                  {
                     WatermarkImage genWatermark = new WatermarkImage();
                     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;
               
               return true;
            }
            catch (Exception ex)
            {
               throw new Exception("上傳文件時(shí)發(fā)生未知錯(cuò)誤!" ex.Message);
            }
         }
         catch (Exception ex)
         {
            _Error = ex.Message;
            return false;
         }
      }
      
      private void CreateDir(string dir)
      {
         if (Directory.Exists(dir) == false)
         Directory.CreateDirectory(dir);
      }
      
      private bool IsUploadImage(string fileExtension)
      {
         bool isImage = PICTURE_FILE.IndexOf(fileExtension) > 0;
         return isImage;
      }
   }
}

 

希望本文所述對(duì)大家的asp.net程序設(shè)計(jì)有所幫助。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久久一区二区 | 一区二区三区国产在线 | 全黄裸片武则天一级第4季 偿还电影免费看 | 黄色网址免费入口 | 亚洲午夜国产 | av在线免费在线观看 | 内地av在线 | 成人电影毛片 | 免费黄色大片网站 | 亚洲一区在线免费视频 | 99麻豆久久久国产精品免费 | 国产四区 | 亚洲码无人客一区二区三区 | 日本羞羞的午夜电视剧 | 九色 在线 | 国产精品99精品 | 免费黄色大片网站 | 久久国产精品影视 | 国产精品成人亚洲一区二区 | 亚洲亚色 | 男人的天堂色偷偷 | 亚洲一区中文字幕 | 羞羞视频.www在线观看 | 色婷婷久久一区二区 | 国产精品久久久久久久四虎电影 | 在线中文字幕网站 | 一级黄色免费大片 | 最近免费观看高清韩国日本大全 | 91国内精品久久久久免费影院 | 毛片成人 | 特色一级黄色片 | 久久综合久久精品 | 久久久精品视频免费看 | av在线免费观看国产 | 91 免费看片 | 一区二区三区四区高清视频 | 国产成年人网站 | 免费91在线 | 91一区二区三区久久久久国产乱 | 亚洲视色| 全黄性性激高免费视频 |