public class UploadPic

{
public UploadPic()

{
}


/**//// <summary>
/// 保存的方法
/// </summary>
/// <param name="_file">上传文件的方法</param>
/// <param name="_compress">是否压缩图片,true的时候_minwidth和_minhight属性才有效</param>
/// <param name="_saveOriginally">是否保存原始图片</param>
/// <param name="_path">上传的路径</param>
/// <param name="_minwidth">最小宽度(压缩的时候才有用)</param>
/// <param name="_minhight">最小高度(压缩的时候才有用)</param>
/// <returns>错误返回"",否则返回文件名</returns>
public string Save(HtmlInputFile _file,bool _compress,bool _saveOriginally,string _path,int _minwidth,int _minhight)

{
string strFileName = "";

//先检查文件名
strFileName = CheckFile(_file);

if(strFileName == "")
return "";
else
strFileName = composeFileName(strFileName);//文件名通过检查后再组合成新文件名。
try

{
System.Web.UI.Page MyPage = new Page();
//如果不压缩,或者 压缩并且要求保存原文件,则保存原图片
if(!_compress || (_compress && _saveOriginally))
_file.PostedFile.SaveAs(MyPage.Server.MapPath(_path + "max" + strFileName));
//如果压缩,则保存压缩后的小图片
if(_compress)

{
System.Drawing.Image NewPic = System.Drawing.Image.FromStream(_file.PostedFile.InputStream);
int intMaxHight = NewPic.Height;
int intMaxWidth = NewPic.Width;

if(intMaxHight <= _minhight && intMaxWidth <= _minwidth)

{
_minhight = intMaxHight;
_minwidth = intMaxWidth;
}
else

{
if(intMaxWidth>intMaxHight)

{
int tmpheight =(int)((double)intMaxHight/(double)intMaxWidth*(double)_minwidth);
_minhight = tmpheight > _minhight ? _minhight : tmpheight;
}
else

{
int tmpwidth =(int)((double)intMaxWidth/(double)intMaxHight*(double)_minhight);
_minwidth = tmpwidth > _minwidth ? _minwidth : tmpwidth;
}
}
System.Drawing.Image thumimg = null;
System.Drawing.Image.GetThumbnailImageAbort callb = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
thumimg = NewPic.GetThumbnailImage(_minwidth,_minhight,callb,IntPtr.Zero);
thumimg.Save(MyPage.Server.MapPath(_path + "min" + strFileName));
}
}
catch

{
strFileName="";
}
return strFileName;
}


/**//// <summary>
/// 组合文件名
/// </summary>
/// <param name="_filename">原文件名</param>
/// <returns>组合后的文件名</returns>
private string composeFileName(string _filename)

{
//组合文件名,文件名前加日期
string date = DateTime.Now.ToString();
date = date.Replace(":","");
date = date.Replace(" ","");
date = date.Replace("-","");

return date + "_"+ _filename;
}


/**//// <summary>
/// 检查文件格式
/// </summary>
/// <param name="_file">文件格式,这里定义的合法的是.jpg .gif两种</param>
/// <returns>错误返回“”,正确返回文件名filename</returns>
private string CheckFile(HtmlInputFile _file)

{
if(_file.PostedFile.ContentLength == 0)
return "";

string _strFile = _file.Value;
string StrFileName = _strFile.Substring(_file.PostedFile.FileName.LastIndexOf(@"\")+1);
string fileFormater = _strFile.Substring(_file.PostedFile.FileName.LastIndexOf("."));
switch(fileFormater.ToLower())

{
case ".jpg":
return StrFileName;
case ".gif":
return StrFileName;
default:
return "";
}
}

private bool ThumbnailCallback()

{
return false;
}
}
posted on
2005-08-30 17:21
Michael J
阅读(
390)
评论()
收藏
举报