天天看點

上傳圖檔并生成略縮圖

參數說明

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); < BR> }

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的圖檔!";

}

}< BR> catch (Exception ex) {

throw new System.Exception((ex.Message + ("/r/n" + ex.StackTrace)));

}

return blnResult;

}

private static bool ThumbnailCallback() { return false; }