先收集一些相关资源
PublicClassClassUpPic
PrivatevPicFileAsSystem.Web.UI.HtmlControls.HtmlInputFile
PrivatevSmallPicSize,vUpFileSizeAsInteger
PrivatevUpPicPath,vNewPicName,vTmpPicNameAsString
PrivatePicMin,PicMax,vPicMaxAsSystem.Drawing.Image
PrivatePicFormatAsSystem.Drawing.Imaging.ImageFormat
PrivateMinHeight,MinWidthAsDecimal
PrivateMyfileAsIO.File
PublicSubNew(ByValPicFileAsSystem.Web.UI.HtmlControls.HtmlInputFile,ByValUpPicTypeAsPicType)
vPicFile=PicFile
vUpFileSize=HttpContext.Current.Application("UpFileSize")
SelectCaseUpPicType
CasePicType.Face
vUpPicPath="upload/images/Face"
vSmallPicSize=150
vNewPicName=HttpContext.Current.Session("MemberID")&"."&GetRightByChar(vPicFile.PostedFile.FileName,".")
CasePicType.Photo
vUpPicPath="upload/images/Photo"
vSmallPicSize=150
vNewPicName=System.Guid.NewGuid.ToString()&"."&GetRightByChar(vPicFile.PostedFile.FileName,".")
CasePicType.Pic
vUpPicPath="upload/images/Pic"
vSmallPicSize=550
vNewPicName=System.Guid.NewGuid.ToString()&"."&GetRightByChar(vPicFile.PostedFile.FileName,".")
EndSelect
EndSub
PublicFunctionGetSavedFileName()AsString
'检验图片类型=================================================================
IfvPicFile.PostedFile.FileName=""Then
ThrowNewNotSupportedException("文件为空,请您选择上传的图片文件!")
EndIf
IfLeft(vPicFile.PostedFile.ContentType,5)<>"image"Then
ThrowNewNotSupportedException("文件格式不合法,请选取有效的图片文件!"&vPicFile.PostedFile.ContentType)
EndIf
IfvPicFile.PostedFile.ContentLength>vUpFileSizeThen
DimMaxNumberAsDecimal=vUpFileSize/1024/1024
ThrowNewNotSupportedException("上传的图片文件太大,最大支持"&Format(MaxNumber,"##,##0")&"M!")
EndIf
'检验数量限制=================================================================
'保存大文件=================================================================
vPicFile.PostedFile.SaveAs(HttpContext.Current.Server.MapPath(vUpPicPath&"/max/")&vNewPicName)
vPicFile.Dispose()
'缩略图片文件=================================================================
PicMax=System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(vUpPicPath&"/max/")&vNewPicName)
IfNot(PicMax.RawFormatIsPicFormat.GifOrPicMax.RawFormatIsPicFormat.Png)Then
IfPicMax.Height>vSmallPicSizeOrPicMax.Width>vSmallPicSizeThen
vTmpPicName=System.Guid.NewGuid.ToString()&".png"
vPicMax=PicMax
PicMax.Save(HttpContext.Current.Server.MapPath(vUpPicPath&"/max/")&vTmpPicName,PicFormat.Png)
vPicMax.Dispose()
PicMax=System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(vUpPicPath&"/max/")&vTmpPicName)
EndIf
EndIf
'保存小文件=================================================================
GetMinPic(PicMax).Save(HttpContext.Current.Server.MapPath(vUpPicPath&"/min/")&vNewPicName,PicFormat.Jpeg)
PicMax.Dispose()
'删除临时png文件=================================================================
IfvTmpPicName<>""ThenMyfile.Delete(HttpContext.Current.Server.MapPath(vUpPicPath&"/max/")&vTmpPicName)
ReturnvNewPicName
EndFunction
PrivateFunctionGetMinPic(ByValMaxPicAsSystem.Drawing.Image)AsSystem.Drawing.Image
IfMaxPic.Height>vSmallPicSizeOrMaxPic.Width>vSmallPicSizeThen
IfMaxPic.Height>MaxPic.WidthThen
MinWidth=MaxPic.Width/(MaxPic.Height/vSmallPicSize)
MinHeight=vSmallPicSize
Else
MinWidth=vSmallPicSize
MinHeight=MaxPic.Height/(MaxPic.Width/vSmallPicSize)
EndIf
ReturnMaxPic.GetThumbnailImage(CInt(MinWidth),CInt(MinHeight),Nothing,NewSystem.IntPtr())
Else
ReturnMaxPic
EndIf
EndFunction
EnumPicType
Face=1
Photo=2
Pic=3
EndEnum
PrivateFunctionGetRightByChar(ByValStrValueAsString,ByValCharValueAsString)AsString
DimMyStr()AsString=Split(StrValue,CharValue)
ReturnMyStr(MyStr.Length-1)
EndFunction
EndClass
转自:http://guoblog.com/blogview.asp?logID=259