浏览文件夹下面所有图片
时间:2021-07-01 10:21:17
帮助过:73人阅读
代码如下:
<%
'+-----------------------------------+
'| 变量设置
'+-----------------------------------+
cTitle = "所有上传图片(注:以下为图片文件夹下面所有图片,并非全部为有效图片!)" '名字
cPicType = "jpeg,jpg,gif,png,bmp" '图片类型 (使用","将图片格式分开)
cHeight = 120 '缩图高度
cWidth = 120 '缩图宽度
cEachLineMax = 5 '每行显示图片数
cEachPageMax = 20 '每页显示图片数目
pic_path="/uploadpic/" '设定图片所在路径
'+-----------------------------------+
'| 定义函数
'+-----------------------------------+
Function getExt(name)
getExt = right(name, 3)
End Function
Function isPIC(fileName, picType)
ext = getExt(fileName)
isPIC = False
typeList = split(picType, ",")
For ii = LBound(typeList) To UBound(typeList)
If UCase(ext) = UCase(typeList(ii)) Then
isPIC = True
Exit For
End If
Next
End Function
Function pageBar(page, pageTotal)
response.Write "[ <A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & (page - 1) & " title=上一页>上一页</A> ] "
response.Write "<A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=1 title=首页><< </A>"
i = pageStart
Do while i < page
response.Write "<A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & i & " title=""第 " & i & " 页"">[" & i & "]</A> "
i = i + 1
Loop
response.Write "[<FONT COLOR=red><B>" & page & "</B></FONT>]"
i = pageMiddle
Do while i <= pageEnd
response.Write "<A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & i & " title=""第 " & i & " 页"">[" & i & "]</A> "
i = i + 1
Loop
response.Write "...<A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & pageTotal & " title=""第 " & pageTotal & " 页"">[" & pageTotal & "]</A>"
response.Write " <A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & pageTotal & " title=尾页>>></A>"
response.Write "[ <A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & (page + 1) & " title=下一页>下一页</A> ] 共 <B><FONT COLOR=red>" & pageTotal & "</FONT></B> 页 当前所在第 <B><FONT COLOR=red>" & page & "</FONT></B> 页 图片数 : <B><FONT COLOR=red>" & picTotal & "</FONT></B>"
End Function
'+-----------------------------------+
'| 取图片尺寸类
'+-----------------------------------+
Class possible
dim aso
Private Sub Class_Initialize
set aso=CreateObject("Adodb.Stream")
aso.Mode=3
aso.Type=1
aso.Open
End Sub
Private Sub Class_Terminate
set aso=nothing
End Sub
Private Function Bin2Str(Bin)
Dim K, Str
For K=1 to LenB(Bin)
clow=MidB(Bin,K,1)
if ASCB(clow)<128 then
Str = Str & Chr(ASCB(clow))
else
K=K+1
if K <= LenB(Bin) then Str = Str & Chr(ASCW(MidB(Bin,K,1)&clow))
end if
Next
Bin2Str = Str
End Function
Private Function Num2Str(num,base,lens)
dim ret
ret = ""
while(num>=base)
ret = (num mod base) & ret
num = (num - num mod base)/base
wend
Num2Str = right(string(lens,"0") & num & ret,lens)
End Function
Private Function Str2Num(str,base)
dim ret
ret = 0
for k=1 to len(str)
ret = ret *base + cint(mid(str,k,1))
next
Str2Num=ret
End Function
Private Function BinVal(bin)
dim ret
ret = 0
for k = lenb(bin) to 1 step -1
ret = ret *256 + ascb(midb(bin,k,1))
next
BinVal=ret
End Function
Private Function BinVal2(bin)
dim ret
ret = 0
for k = 1 to lenb(bin)
ret = ret *256 + ascb(midb(bin,k,1))
next
BinVal2=ret
End Function
Private Function getImageSize(filespec)
dim ret(3)
aso.LoadFromFile(filespec)
bFlag=aso.read(3)
select case hex(binVal(bFlag))
case "4E5089":
aso.read(15)
ret(0)="PNG"
ret(1)=BinVal2(aso.read(2))
aso.read(2)
ret(2)=BinVal2(aso.read(2))
case "464947":
aso.read(3)
ret(0)="GIF"
ret(1)=BinVal(aso.read(2))
ret(2)=BinVal(aso.read(2))
case "535746":
aso.read(5)
binData=aso.Read(1)
sConv=Num2Str(ascb(binData),2 ,8)
nBits=Str2Num(left(sConv,5),2)
sConv=mid(sConv,6)
while(len(sConv)<nBits*4)
binData=aso.Read(1)
sConv=sConv&Num2Str(ascb(binData),2 ,8)
wend
ret(0)="SWF"
ret(1)=int(abs(Str2Num(mid(sConv,1*nBits+1,nBits),2)-Str2Num(mid(sConv,0*nBits+1,nBits),2))/20)
ret(2)=int(abs(Str2Num(mid(sConv,3*nBits+1,nBits),2)-Str2Num(mid(sConv,2*nBits+1,nBits),2))/20)
case "FFD8FF":
do
do: p1=binVal(aso.Read(1)): loop while p1=255 and not aso.EOS
if p1>191 and p1<196 then exit do else aso.read(binval2(aso.Read(2))-2)
do:p1=binVal(aso.Read(1)):loop while p1<255 and not aso.EOS
loop while true
aso.Read(3)
ret(0)="JPG"
ret(2)=binval2(aso.Read(2))
ret(1)=binval2(aso.Read(2))
case else:
if left(Bin2Str(bFlag),2)="BM" then
aso.Read(15)
ret(0)="BMP"
ret(1)=binval(aso.Read(4))
ret(2)=binval(aso.Read(4))
else
ret(0)=""
end if
end select
ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &""""
getimagesize=ret
End Function
Function readX(pic_path)
Set fso1 = server.CreateObject("Scripting.FileSystemObject")
Set f1 = fso1.GetFile(pic_path)
ext=fso1.GetExtensionName("."&pic_path)
select case UCase(ext)
case "GIF","BMP","JPG","PNG":
arr=getImageSize(f1.path)
readX = arr(1)
case "swf"
arr=pp.getimagesize(f1.path)
readX = arr(1)
end select
Set f1=nothing
Set fso1=nothing
End Function
Function readY(pic_path)
Set fso1 = server.CreateObject("Scripting.FileSystemObject")
Set f1 = fso1.GetFile(pic_path)
ext=fso1.GetExtensionName("."&pic_path)
select case UCase(ext)
case "GIF","BMP","JPG","PNG":
arr=getImageSize(f1.path)
readY = arr(2)
case "swf"
arr=pp.getimagesize(f1.path)
readY = arr(2)
end select
Set f1=nothing
Set fso1=nothing
End Function
End Class
'+-----------------------------------+
'| 数据处理
'+-----------------------------------+
Dim fileArray()
reDim fileArray(0)
Set fileObj = Server.CreateObject("Scripting.FileSystemObject")
Set folderObj = fileObj.GetFolder(server.MapPath("."&pic_path))
i = 0
For Each file in folderObj.Files
If isPIC(file.Name, cPicType) Then
fileArray(i) = file.Name
i = i + 1
reDim Preserve fileArray(i)
End If
Next
Set FileObj = Nothing
Set FolderObj = Nothing
picTotal = UBound(fileArray)
'+-----------------------------------+
'| 分页处理
'+-----------------------------------+
page = int(Request.QueryString("page"))
pageTotal = -(int(-(picTotal/cEachPageMax)))
If page = Empty or page < 0 Then page = 1
If page > pageTotal Then page = pageTotal
offset = cEachPageMax * page
start = offset - cEachPageMax
If start < 0 Then start = 0
If offset > picTotal Then offset = picTotal
pageStart = page - cEachPageMax
If pageStart <= 0 Then pageStart = 1
pageMiddle = page + 1
pageEnd = pageMiddle + cEachPageMax
If page <= cEachPageMax Then pageEnd = cEachPageMax * 2
If pageEnd > pageTotal Then pageEnd = pageTotal
'+-----------------------------------+
'| 输出部分
'+-----------------------------------+
%>
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> <%=cTitle%> </title>
<style type='text/css'>
a:link, a:visited, a:active { text-decoration: none; color: #000 }
a:hover { color: orangered; text-decoration:none }
BODY { scrollbar-face-color: #DEE3E7; scrollbar-highlight-color: #FFFFFF; scrollbar-shadow-color: #DEE3E7; scrollbar-3dlight-color: #D1D7DC; scrollbar-arrow-color: #006699; scrollbar-track-color: #EFEFEF; scrollbar-darkshadow-color: #98AAB1; font: 12px Verdana; color:#333333; font-family: Tahoma,Verdana, Tahoma, Arial,Helvetica, sans-serif; font-size: 12px; color: #000; margin:0px 12px 0px 12px;background-color:#FFF }
TD {font: 12px Verdana; color:#333333; font-family: Tahoma,Verdana, Tahoma, Arial,Helvetica, sans-serif; font-size: 12px; color: #000; };
</style>
</head>
<body topmargin="0" leftmargin="0">
<script>
tPopWait=20;
showPopStep=10;
popOpacity=85;
sPop=null;
curShow=null;
tFadeOut=null;
tFadeIn=null;
tFadeWaiting=null;
document.write("<style type='text/css'id='defaultPopStyle'>");
document.write(".cPopText { font-family: Verdana, Tahoma; background-color: #F7F7F7; border: 1px #000000 solid; font-size: 11px; padding-right: 4px; padding-left: 4px; height: 20px; padding-top: 2px; padding-bottom: 2px; filter: Alpha(Opacity=0)}");
document.write("</style>");
document.write("<div id='popLayer' style='position:absolute;z-index:500;' class='cPopText'></div>");
function showPopupText(){
var o=event.srcElement;
MouseX=event.x;
MouseY=event.y;
if(o.alt!=null && o.alt!="") { o.pop=o.alt;o.alt="" }
if(o.title!=null && o.title!=""){ o.pop=o.title;o.title="" }
if(o.pop) { o.pop=o.pop.replace("\n","<br>"); o.pop=o.pop.replace("\n","<br>"); }
if(o.pop!=sPop) {
sPop=o.pop;
clearTimeout(curShow);
clearTimeout(tFadeOut);
clearTimeout(tFadeIn);
clearTimeout(tFadeWaiting);
if(sPop==null || sPop=="") {
popLayer.innerHTML="";
popLayer.style.filter="Alpha()";
popLayer.filters.Alpha.opacity=0;
} else {
if(o.dyclass!=null) popStyle=o.dyclass
else popStyle="cPopText";
curShow=setTimeout("showIt()",tPopWait);
}
}
}
function showIt() {
popLayer.className=popStyle;
popLayer.innerHTML='<BR> '+sPop+' <BR><BR>';
popWidth=popLayer.clientWidth;
popHeight=popLayer.clientHeight;
if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24
else popLeftAdjust=0;
if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24
else popTopAdjust=0;
popLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
popLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
popLayer.style.filter="Alpha(Opacity=0)";
fadeOut();
}
function fadeOut(){
if(popLayer.filters.Alpha.opacity<popOpacity) {
popLayer.filters.Alpha.opacity+=showPopStep;
tFadeOut=setTimeout("fadeOut()",1);
}
}
document.onmouseover=showPopupText;
</script>
<br><br>
<center>
<%=cTitle%>
<br><br>
<% pageBar page, pageTotal %>
<br><br>
<table border="0" CELLPADDING="4" CELLSPACING="4">
<tr>
<%
'+-----------------------------------+
'| 循环输出图片
'+-----------------------------------+
j = 1
i = start
Set pp = New possible
Do While i < offset
thisPicPath = server.mappath("."&pic_path & fileArray(i))
x = pp.readX(thisPicPath)
y = pp.readY(thisPicPath)
If x > cWidth or y > cHeight Then
tWidth = x / cWidth : tHeight = y / cHeight
If tWidth > tHeight Then
w = cWidth
h = y / tWidth
Elseif tWidth < tHeight Then
h = cHeight
w = x / tHeight
Else
w = cWidth
h = cHeight
End If
Else
w = x
h = y
End If
If j > cEachLineMax Then
j = 1
response.Write "</tr><tr>"
End If
response.Write "<td style=""border: 1px solid #000000"" width=" & cWidth & " height=" & cHeight & " align=center><a href=""./"&pic_path & fileArray(i) & """ target=""_blank""><img border=0 src=" & "."& pic_path& fileArray(i) & " width=" & w & " height=" & h & " alt=""文件:" & fileArray(i) & " <br> 尺寸:" & x & " × " & y & " ""></a></td>"
j = j + 1
i = i + 1
Loop
Set pp = Nothing
%>
</tr>
</table>
<br>
<% pageBar page, pageTotal %>
</center>
</body>
</html>