asp.net fileupload文件上传类实例代码

发布时间:2020-10-24编辑:脚本学堂
一例asp.net fileupload文件上传类代码,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;
}
}
}