using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.IO;
using System.Net;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Web;
using System.Collections;
namespace CCNF.Plugin.Upload
{
/// <summary>
/// 上传功能。
/// 本类提供上传的一般性方法。
/// </summary>
/// <creator>Marc</creator>
public abstract class UploadAbstract : IUpload
{
#region 常量属性
/// <summary>
/// 允许上传的文件扩展名。
/// 多个文件扩展名以英文逗号隔开。
/// 默认从Web.config中获取。
/// </summary>
private readonly string UPLOADEXTENTION = ConfigurationManager.AppSettings["UploadExtention"];
private string uploadExtention = null;
/// <summary>
/// 允许上传的文件扩展名。
/// 多个文件扩展名以英文逗号隔开。
/// 默认从Web.config中获取。
/// </summary>
public string UploadExtention
{
get
{
if (string.IsNullOrEmpty(this.uploadExtention))
{
if (string.IsNullOrEmpty(UPLOADEXTENTION))
{
throw new Exception("web.config中未配置UploadExtention属性");
}
this.uploadExtention = UPLOADEXTENTION;
}
return this.uploadExtention;
}
set
{
this.uploadExtention = value;
}
}
/// <summary>
/// 允许上传的单个文件最大大小。
/// 单位为k。
/// 默认从Web.config中获取。
/// </summary>
private readonly int UPLOADLENGTH = Convert.ToInt16(ConfigurationManager.AppSettings["UploadLength"]);
private int uploadLength = 0;
/// <summary>
/// 允许上传的单个文件最大大小。
/// 单位为。
/// 默认从Web.config中获取。
/// </summary>
public int UploadLength
{
get
{
if (this.uploadLength == 0)
{
this.uploadLength = UPLOADLENGTH;
}
return this.uploadLength;
}
set
{
this.uploadLength = value;
}
}
/// <summary>
/// 所上传的文件要保存到哪个物理盘上。
/// 此值为严格的物理文件夹路径。如:E:\CCNF\
/// 注意:必须有盘符。
/// 此属于用于扩展图片服务器数据存储。
/// 默认从Web.config中获取。
/// </summary>
private readonly string UPLOADPHYSICALPATH = ConfigurationManager.AppSettings["UploadPhysicalPath"];
private string uploadPhysicalPath = null;
/// <summary>
/// 所上传的文件要保存到哪个物理盘上。
/// 此值为严格的物理文件夹路径。如:E:\CCNF\
/// 注意:必须有盘符。
/// 此属性用于扩展图片服务器数据存储。
/// 默认从Web.config中获取。
/// </summary>
public string UploadPhysicalPath
{
get
{
if (string.IsNullOrEmpty(this.uploadPhysicalPath))
{
if (string.IsNullOrEmpty(UPLOADPHYSICALPATH))
{
throw new Exception("web.config中未配置UploadPhysicalPath属性");
}
this.uploadPhysicalPath = UPLOADPHYSICALPATH;
}
return this.uploadPhysicalPath;
}
set
{
this.uploadPhysicalPath = value;
}
}
#endregion
#region 枚举
/// <summary>
/// 水印类型
/// </summary>
public enum WatermarkTypeEnum
{
/// <summary>
/// 文字水印
/// </summary>
String = 1,
/// <summary>
/// 图片水印
/// </summary>
Image = 2
}
/// <summary>
/// 上传结果
/// </summary>
protected enum UploadResultEnum
{
/// <summary>
/// 未指定要上传的对象
/// </summary>
UploadedObjectIsNull = -9,
/// <summary>
/// 文件扩展名不允许
/// </summary>
ExtentionIsNotAllowed = -2,
/// <summary>
/// 文件大小不在限定范围内
/// </summary>
ContentLengthNotWithinTheScope = -1,
/// <summary>
/// 未配置或未指定文件的物理保存路径
/// </summary>
UploadPhysicalPathNoSpecify = -20,
/// <summary>
/// 未指定图片水印的相对文件物理路径
/// </summary>
ImageWartermarkPathNoSpecify = -30,
/// <summary>
/// 未指定水印的文字
/// </summary>
StringWatermarkNoSpecify = -31,
/// <summary>
/// 上传原始文件失败
/// </summary>
UploadOriginalFileFailure = 0,
/// <summary>
/// 生成缩略失败
/// </summary>
CreateThumbnailImageFailure = -3,
/// <summary>
/// 未知错误
/// </summary>
UnknownError = -4,
/// <summary>
/// 上传成功
/// </summary>
Success = 1
}
#endregion
#region 上传属性
/// <summary>
/// 保存文件夹。
/// 格式形如: upload\ 或 images\ 或 upload\user\ 等。以\结尾。
/// 不允许加盘符
/// </summary>
public string SaveFolder { get; set; }
/// <summary>
/// 自定义生成新的文件夹。
/// 格式形如: upload\ 或 images\ 或 upload\2011\10\8\ 等。以\结尾。
/// 最终的文件夹 = UploadPhysicalPath + SaveFolder + Folder
/// </summary>
public string Folder { get; set; }
/// <summary>
/// 是否生成水印。
/// 默认不启用水印生成。
/// </summary>
public bool IsMakeWatermark { get; set; }
private int watermarkType = (int)WatermarkTypeEnum.String;
/// <summary>
/// 生成水印的方式:string从文字生成,image从图片生成。
/// 默认是文字水印
/// </summary>
public int WatermarkType
{
get
{
return this.watermarkType;
}
set
{
this.watermarkType = value;
}
}
/// <summary>
/// 水印文字。
/// </summary>
public string Watermark { get; set; }
/// <summary>
/// 水印图片的位置。
/// 提供图片水印的相对位置。
/// 不含盘符。
/// </summary>
public string ImageWartermarkPath { get; set; }
/// <summary>
/// 上传后生成的新文件路径。
/// 此路径为相对物理路径,不含盘符。
/// </summary>
public string NewFilePath { get; protected set; }
/// <summary>
/// 生成缩略图片的长宽, 是一个二维数据。
/// 如:int a[3,2]={{1,2},{5,6},{9,10}}。
/// 如果上传的文件是图片类型,并且希望生成此图片的缩略图,那么请将
上一个:ASP.net(C#)从其他网站抓取内容并截取有用信息的实现代码
下一个:ASP.NET中各个后缀名的含义介绍