• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Asp.Net的FileUpload类实现上传文件实例
    POST TIME:2021-10-18 02:35

    本文实例讲述了Asp.Net的FileUpload类实现上传文件的方法。分享给大家供大家参考。

    具体功能代码如下:

    复制代码 代码如下:
    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>
          /// 构造器
          /// /summary>
          /// param name="fileUpload">Asp.net FileUpload对象/param>
          /// param name="savePath">保存目录,不包含文件名/param>
          /// param name="autoGenFileName">自动生成文件名/param>
          public CFileUpload(FileUpload fileUpload, string savePath, bool autoGenFileName, bool autoGenWatermark)
          {
             _savePath = savePath;
             _fileUpload = fileUpload;
             _AutoGenFileName = autoGenFileName;
             _AutoGenWatermark = autoGenWatermark;
          }
         
          /// summary>
          /// 构造器
          /// /summary>
          /// param name="fileUpload">Asp.net FileUpload对象/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) //自动生成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
                {
                   // 文件另存在服务器指定目录下
                   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("上传文件时发生未知错误!" 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;
          }
       }
    }

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

    您可能感兴趣的文章:
    • Asp.Net修改上传文件大小限制方法
    • Asp.net MVC中使用JQuery插件ajaxFileUpload上传文件
    • ASP.NET插件uploadify批量上传文件完整使用教程
    • asp.net上传文件到数据库的解决方案
    • asp.net中MVC借助Iframe实现无刷新上传文件实例
    • asp.net fileupload控件上传文件与多文件上传
    • Asp.Net模拟表单提交数据和上传文件的实现代码
    • asp.net实现上传文件显示本地绝对路径的实例代码
    • 如何限制asp.net中上传文件的大小的代码
    • asp.net 模拟提交有文件上传的表单(通过http模拟上传文件)
    • 解决.net项目中上传的图片或者文件太大无法上传问题
    上一篇:asp.net使用DataGridTree实现下拉树的方法
    下一篇:asp.net检查服务器上目录或文件是否存在的方法
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信