当前位置: 首页 > 编程笔记 >

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

何兴邦
2023-03-14
本文向大家介绍Asp.Net的FileUpload类实现上传文件实例,包括了Asp.Net的FileUpload类实现上传文件实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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程序设计有所帮助。

 类似资料:
  • 本文向大家介绍用fileupload组件实现的大文件上传简单实例,包括了用fileupload组件实现的大文件上传简单实例的使用技巧和注意事项,需要的朋友参考一下 1.FileUploadServlet.java文件,实现上传处理  2.FileUpload.html文件,实现上传页面。 3.配置web.xml文件中的的servlet和过滤器,过滤器解决上传文件名为中文时出现乱码。   4.过滤器

  • 本文向大家介绍JQuery fileupload插件实现文件上传功能,包括了JQuery fileupload插件实现文件上传功能的使用技巧和注意事项,需要的朋友参考一下 道理相通,我简单分享下在.net MVC下的实装。 1.制作Model类 2.实装controller里的对应方法,我这个处理逻辑比较复杂,懒得修改了,反正就这个意思 3.页面的实装 √,就是这个样子 还附赠了一个简易lodin

  • 本文向大家介绍Java组件FileUpload上传文件实现代码,包括了Java组件FileUpload上传文件实现代码的使用技巧和注意事项,需要的朋友参考一下 一般在用Servlet处理表单元素时,表单元素都是一些简单的文本,Servlet很容易用Request.getParameter()就可以处理。但是当表单不止包含一些简单的文本,比如有上传文件域时,Servlet直接从HttpServlet

  • 本文向大家介绍asp.net core mvc实现文件上传实例,包括了asp.net core mvc实现文件上传实例的使用技巧和注意事项,需要的朋友参考一下 工作用到文件上传的功能,在这个分享下 ~~ Controller:         view: 文件是上传到wwwroot目录文件下的,这我也看不太懂还在学习,欢迎大家交流~~ -------------------------------

  • 本文向大家介绍使用fileupload组件实现文件上传功能,包括了使用fileupload组件实现文件上传功能的使用技巧和注意事项,需要的朋友参考一下 FileUpload文件上传 fileUpload是apache的commons组件提供的上传组件,它最主要的工作就是帮我们解析request.getInpustream()。 使用fileUpload组件首先需要引入两个jar包: commons

  • 本文向大家介绍ASP.NET实现的简单易用文件上传类,包括了ASP.NET实现的简单易用文件上传类的使用技巧和注意事项,需要的朋友参考一下 调用方法: 代码: