上传图片生成缩略图(转)
//生成缩略图功能。
using System;
using System.IO;
using System.Web;
using System.Web.UI.HtmlControls;
namespace MyUplod
{
/// <summary>
/// 上传类。
/// </summary>
public class Upload
{
private int _Error = 0;//返回上传状态。
private int _MaxSize = 160000;//最大单个上传文件
private string _FileType = "jpg/gif/bmp/png";//所支持的上传类型用"/"隔开
private string _SavePath = System.Web.HttpContext.Current.Server.MapPath(".") + "\\";//保存文件的实际路径
private int _SaveType = 0;//上传文件的类型,0代表自动生成文件名
private HtmlInputFile _FormFile;//上传控件。
private string _InFileName = "";//非自动生成文件名设置。
private string _OutFileName = "";//输出文件名。
private bool _IsCreateImg = true;//是否生成缩略图。
private bool _Iss = false;//是否有所略图生成。
private int _Height = 0;//获取上传图片的高度
private int _Width = 0;//获取上传图片的宽度
private int _sHeight = 80;//设置生成缩略图的高度
private int _sWidth = 80;//设置生成缩略图的宽度
//Error返回值,1、没有上传的文件。2、类型不允许。3、大小超限。4、未知错误。0、上传成功。
public int Error
{
get{ return _Error;}
}
public int MaxSize
{
set{ _MaxSize = value;}
}
public string FileType
{
set{_FileType = value;}
}
public string SavePath
{
set{_SavePath = System.Web.HttpContext.Current.Server.MapPath(value);}
}
public int SaveType
{
set{_SaveType = value;}
}
public HtmlInputFile FormFile
{
set{_FormFile = value;}
}
public string InFileName
{
set{_InFileName = value;}
}
public string OutFileName
{
get{return _OutFileName;}
set{_OutFileName = value;}
}
public bool Iss
{
get{return _Iss;}
}
public int Width
{
get{return _Width;}
}
public int Height
{
get{return _Height;}
}
public int sWidth
{
get{return _sWidth;}
set{_sWidth = value;}
}
public int sHeight
{
get{return _sHeight;}
set{_sHeight = value;}
}
//获取文件的后缀名
private string GetExt(string path)
{
return Path.GetExtension(path);
}
//获取输出文件的文件名。
private string FileName(string Ext)
{
if(_SaveType == 0 || _InFileName.Trim() == "")
return DateTime.Now.ToString("yyyyMMddHHmmssfff") + Ext;
else
return _InFileName;
}
//检查上传的文件的类型,是否允许上传。
private bool IsUpload(string Ext)
{
Ext = Ext.Replace(".", "");
bool b = false;
string[] arrFileType = _FileType.Split('/');
foreach(string str in arrFileType)
{
if(str.ToLower() == Ext.ToLower())
{
b = true;
break;
}
}
return b;
}
//上传主要部分。
public void Open()
{
HttpPostedFile hpFile = _FormFile.PostedFile;
if(hpFile == null || hpFile.FileName.Trim() == "")
{
_Error = 1;
return;
}
string Ext = GetExt(hpFile.FileName);
if(!IsUpload(Ext))
{
_Error = 2;
return;
}
int iLen = hpFile.ContentLength;
if(iLen > _MaxSize)
{
_Error = 3;
return;
}
try
{
if(!Directory.Exists(_SavePath))
Directory.CreateDirectory(_SavePath);
byte[] bData = new byte[iLen];
hpFile.InputStream.Read(bData, 0, iLen);
string FName;
FName = FileName(Ext);
FileStream newFile = new FileStream(_SavePath + FName, FileMode.Create);
newFile.Write(bData, 0, bData.Length);
newFile.Flush();
try
{
//获取图片的高度和宽度
System.Drawing.Image Img = System.Drawing.Image.FromStream(newFile);
_Width = Img.Width;
_Height = Img.Height;
//生成缩略图部分
if(_IsCreateImg)
{
//如果上传文件小于15k,则不生成缩略图。
if(iLen > 15360)
{
System.Drawing.Image newImg = Img.GetThumbnailImage(_sWidth, _sHeight, null, System.IntPtr.Zero);
newImg.Save(_SavePath + "s" + FName);
newImg.Dispose();
_Iss = true;
}
}
}
catch{}
newFile.Close();
_OutFileName = FName;
_Error = 0;
return;
}
catch
{
_Error = 4;
return;
}
}
}
}
using System;
using System.IO;
using System.Web;
using System.Web.UI.HtmlControls;
namespace MyUplod
{
/// <summary>
/// 上传类。
/// </summary>
public class Upload
{
private int _Error = 0;//返回上传状态。
private int _MaxSize = 160000;//最大单个上传文件
private string _FileType = "jpg/gif/bmp/png";//所支持的上传类型用"/"隔开
private string _SavePath = System.Web.HttpContext.Current.Server.MapPath(".") + "\\";//保存文件的实际路径
private int _SaveType = 0;//上传文件的类型,0代表自动生成文件名
private HtmlInputFile _FormFile;//上传控件。
private string _InFileName = "";//非自动生成文件名设置。
private string _OutFileName = "";//输出文件名。
private bool _IsCreateImg = true;//是否生成缩略图。
private bool _Iss = false;//是否有所略图生成。
private int _Height = 0;//获取上传图片的高度
private int _Width = 0;//获取上传图片的宽度
private int _sHeight = 80;//设置生成缩略图的高度
private int _sWidth = 80;//设置生成缩略图的宽度
//Error返回值,1、没有上传的文件。2、类型不允许。3、大小超限。4、未知错误。0、上传成功。
public int Error
{
get{ return _Error;}
}
public int MaxSize
{
set{ _MaxSize = value;}
}
public string FileType
{
set{_FileType = value;}
}
public string SavePath
{
set{_SavePath = System.Web.HttpContext.Current.Server.MapPath(value);}
}
public int SaveType
{
set{_SaveType = value;}
}
public HtmlInputFile FormFile
{
set{_FormFile = value;}
}
public string InFileName
{
set{_InFileName = value;}
}
public string OutFileName
{
get{return _OutFileName;}
set{_OutFileName = value;}
}
public bool Iss
{
get{return _Iss;}
}
public int Width
{
get{return _Width;}
}
public int Height
{
get{return _Height;}
}
public int sWidth
{
get{return _sWidth;}
set{_sWidth = value;}
}
public int sHeight
{
get{return _sHeight;}
set{_sHeight = value;}
}
//获取文件的后缀名
private string GetExt(string path)
{
return Path.GetExtension(path);
}
//获取输出文件的文件名。
private string FileName(string Ext)
{
if(_SaveType == 0 || _InFileName.Trim() == "")
return DateTime.Now.ToString("yyyyMMddHHmmssfff") + Ext;
else
return _InFileName;
}
//检查上传的文件的类型,是否允许上传。
private bool IsUpload(string Ext)
{
Ext = Ext.Replace(".", "");
bool b = false;
string[] arrFileType = _FileType.Split('/');
foreach(string str in arrFileType)
{
if(str.ToLower() == Ext.ToLower())
{
b = true;
break;
}
}
return b;
}
//上传主要部分。
public void Open()
{
HttpPostedFile hpFile = _FormFile.PostedFile;
if(hpFile == null || hpFile.FileName.Trim() == "")
{
_Error = 1;
return;
}
string Ext = GetExt(hpFile.FileName);
if(!IsUpload(Ext))
{
_Error = 2;
return;
}
int iLen = hpFile.ContentLength;
if(iLen > _MaxSize)
{
_Error = 3;
return;
}
try
{
if(!Directory.Exists(_SavePath))
Directory.CreateDirectory(_SavePath);
byte[] bData = new byte[iLen];
hpFile.InputStream.Read(bData, 0, iLen);
string FName;
FName = FileName(Ext);
FileStream newFile = new FileStream(_SavePath + FName, FileMode.Create);
newFile.Write(bData, 0, bData.Length);
newFile.Flush();
try
{
//获取图片的高度和宽度
System.Drawing.Image Img = System.Drawing.Image.FromStream(newFile);
_Width = Img.Width;
_Height = Img.Height;
//生成缩略图部分
if(_IsCreateImg)
{
//如果上传文件小于15k,则不生成缩略图。
if(iLen > 15360)
{
System.Drawing.Image newImg = Img.GetThumbnailImage(_sWidth, _sHeight, null, System.IntPtr.Zero);
newImg.Save(_SavePath + "s" + FName);
newImg.Dispose();
_Iss = true;
}
}
}
catch{}
newFile.Close();
_OutFileName = FName;
_Error = 0;
return;
}
catch
{
_Error = 4;
return;
}
}
}
}