//参数说明
//FileBox:上传表单中的表单名
//SavePath:保存路径
//ThumbnailWidth:略缩图宽
//ThumbnailHeight:略缩图高
//FilePath:文件保存路径(输出参数)
//FileName:文件名称(输出参数)
//LastError:(输出错误)
public static bool UploadImages(System.Web.UI.HtmlControls.HtmlInputFile FileBox, string SavePath, Int32 ThumbnailWidth, Int32 ThumbnailHeight, out String FilePath, out String FileName, out string LastError)
{
DateTime datTime = System.DateTime.Now;
String strTemp;
string strFileName = FileBox.PostedFile.FileName;
bool blnResult;
LastError = " ";
System.Drawing.Image xImage;
System.Drawing.Bitmap xBitmap;
int PhotoHeight, PhotoWidth;
string BasePath = System.Web.HttpContext.Current.Server.MapPath("../ ");
Rectangle NewPhoto;
System.Drawing.Imaging.ImageFormat xObject;
string Extension = " ";
FileName = " ";
FilePath = " ";
try
{
if (strFileName == " ")
{
LastError = "请点击浏览选择要上传的文件! ";
return false;
}
if (Convert.ToDecimal(FileBox.PostedFile.ContentLength) <= 2000000 && Convert.ToDecimal(FileBox.PostedFile.ContentLength) > 1500)
{
//查看扩展名是否合法
Extension = Path.GetExtension(strFileName);
Extension = Extension.ToLower();
if (Extension == ".gif " || Extension == ".jpg " || Extension == ".jpeg " || Extension == ".bmp ")
{
switch (Extension)
{
case ".gif ":
xObject = System.Drawing.Imaging.ImageFormat.Gif;
break;
case ".bmp ":
xObject = System.Drawing.Imaging.ImageFormat.Bmp;
break;
default:
xObject = System.Drawing.Imaging.ImageFormat.Jpeg;
break;
}
}
else
{
LastError = "上传的文件不是有效的图片文件,请上传格式为:.gif.jpg.bmp的文件! ";
return false;
}
//-----------------------------
//生成保存的文件路径及文件名
//-----------------------------
strTemp = datTime.ToShortDateString().Replace("- ", " ");
FileName = datTime.ToLongTimeString().Replace(": ", " ") + Extension;
FilePath = SavePath + strTemp + "/ ";
Friendlib.Function.CreateDirectory(BasePath + FilePath);
//保存大图
xImage = System.Drawing.Bitmap.FromStream(FileBox.PostedFile.InputStream);
xImage.Save(BasePath + FilePath + FileName);
xImage.Dispose();
//-----------------------------
//开始生成缩略图
//-----------------------------
xBitmap = new Bitmap(BasePath + FilePath + FileName);//------------------
PhotoHeight = xBitmap.Height;
PhotoWidth = xBitmap.Width;
//判断图片的形状
if (Convert.ToDecimal(PhotoHeight) / Convert.ToDecimal(PhotoWidth) > Convert.ToDecimal(ThumbnailHeight) / Convert.ToDecimal(ThumbnailWidth))//高有余
{
PhotoHeight = Convert.ToInt16((Convert.ToDecimal(ThumbnailHeight) / Convert.ToDecimal(ThumbnailWidth)) * Convert.ToDecimal(PhotoWidth));
NewPhoto = new Rectangle(0, 0, PhotoWidth, PhotoHeight);
}
else if (Convert.ToDecimal(PhotoHeight) / Convert.ToDecimal(PhotoWidth) < Convert.ToDecimal(ThumbnailHeight) / Convert.ToDecimal(ThumbnailWidth))
{
PhotoWidth = Convert.ToInt16((Convert.ToDecimal(ThumbnailWidth) / Convert.ToDecimal(ThumbnailHeight)) * Convert.ToDecimal(PhotoHeight));
NewPhoto = new
Rectangle(Convert.ToInt16((Convert.ToDecimal(xBitmap.Width) - Convert.ToDecimal(PhotoWidth)) / 2), 0, PhotoWidth, PhotoHeight);
}
else
{
NewPhoto = newRectangle(0, 0, PhotoWidth, PhotoHeight);
}
System.Drawing.Image myBitmap;
myBitmap = xBitmap.Clone(NewPhoto, System.Drawing.Imaging.PixelFormat.DontCare);
System.Drawing.Image.GetThumbnailImageAbort myCallback = new
System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
System.Drawing.Image myThumbnail =
myBitmap.GetThumbnailImage(ThumbnailWidth, ThumbnailHeight, myCallback,
IntPtr.Zero); myThumbnail.Save(BasePath + FilePath + "s " + FileName, xObject);
myThumbnail.Dispose(); myBitmap.Dispose(); xBitmap.Dispose(); return true;
}
else
{
blnResult = false; LastError = "不能上传大于2M及小于1.5K的图片! ";
}
}
catch (Exception ex)
{
throw new System.Exception((ex.Message + ("\r\n " + ex.StackTrace)));
}
return blnResult;
}
private static bool ThumbnailCallback() { return false; }
评论列表:
[/S][S]