當前位置:編程學習大全網 - 編程語言 - ASP上傳圖片和顯示圖片的代碼?

ASP上傳圖片和顯示圖片的代碼?

化境無組件上傳類:

upload_5xsoft.inc:

<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>

dim Data_5xsoft

Class upload_5xsoft

dim objForm,objFile,Version

Public function Form(strForm)

strForm=lcase(strForm)

if not objForm.exists(strForm) then

Form=""

else

Form=objForm(strForm)

end if

end function

Public function File(strFile)

strFile=lcase(strFile)

if not objFile.exists(strFile) then

set File=new FileInfo

else

set File=objFile(strFile)

end if

end function

Private Sub Class_Initialize

dim RequestData,sStart,vbCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile

dim iFileSize,sFilePath,sFileType,sFormValue,sFileName

dim iFindStart,iFindEnd

dim iFormStart,iFormEnd,sFormName

Version="化境HTTP上傳程序 Version 2.1"

set objForm=Server.CreateObject("Scripting.Dictionary")

set objFile=Server.CreateObject("Scripting.Dictionary")

if Request.TotalBytes<1 then Exit Sub

set tStream = Server.CreateObject("adodb.stream")

set Data_5xsoft = Server.CreateObject("adodb.stream")

Data_5xsoft.Type = 1

Data_5xsoft.Mode =3

Data_5xsoft.Open

Data_5xsoft.Write Request.BinaryRead(Request.TotalBytes)

Data_5xsoft.Position=0

RequestData =Data_5xsoft.Read

iFormStart = 1

iFormEnd = LenB(RequestData)

vbCrlf = chrB(13) & chrB(10)

sStart = MidB(RequestData,1, InStrB(iFormStart,RequestData,vbCrlf)-1)

iStart = LenB (sStart)

iFormStart=iFormStart+iStart+1

while (iFormStart + 10) < iFormEnd

iInfoEnd = InStrB(iFormStart,RequestData,vbCrlf & vbCrlf)+3

tStream.Type = 1

tStream.Mode =3

tStream.Open

Data_5xsoft.Position = iFormStart

Data_5xsoft.CopyTo tStream,iInfoEnd-iFormStart

tStream.Position = 0

tStream.Type = 2

tStream.Charset ="gb2312"

sInfo = tStream.ReadText

tStream.Close

'取得表單項目名稱

iFormStart = InStrB(iInfoEnd,RequestData,sStart)

iFindStart = InStr(22,sInfo,"name=""",1)+6

iFindEnd = InStr(iFindStart,sInfo,"""",1)

sFormName = lcase(Mid (sinfo,iFindStart,iFindEnd-iFindStart))

'如果是文件

if InStr (45,sInfo,"filename=""",1) > 0 then

set theFile=new FileInfo

'取得文件名

iFindStart = InStr(iFindEnd,sInfo,"filename=""",1)+10

iFindEnd = InStr(iFindStart,sInfo,"""",1)

sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)

theFile.FileName=getFileName(sFileName)

theFile.FilePath=getFilePath(sFileName)

theFile.FileExt=GetFileExt(sFileName)

'取得文件類型

iFindStart = InStr(iFindEnd,sInfo,"Content-Type: ",1)+14

iFindEnd = InStr(iFindStart,sInfo,vbCr)

theFile.FileType =Mid (sinfo,iFindStart,iFindEnd-iFindStart)

theFile.FileStart =iInfoEnd

theFile.FileSize = iFormStart -iInfoEnd -3

theFile.FormName=sFormName

if not objFile.Exists(sFormName) then

objFile.add sFormName,theFile

end if

else

'如果是表單項目

tStream.Type =1

tStream.Mode =3

tStream.Open

Data_5xsoft.Position = iInfoEnd

Data_5xsoft.CopyTo tStream,iFormStart-iInfoEnd-3

tStream.Position = 0

tStream.Type = 2

tStream.Charset ="gb2312"

sFormValue = tStream.ReadText

tStream.Close

if objForm.Exists(sFormName) then

objForm(sFormName)=objForm(sFormName)&", "&sFormValue

else

objForm.Add sFormName,sFormValue

end if

end if

iFormStart=iFormStart+iStart+1

wend

RequestData=""

set tStream =nothing

End Sub

Private Sub Class_Terminate

if Request.TotalBytes>0 then

objForm.RemoveAll

objFile.RemoveAll

set objForm=nothing

set objFile=nothing

Data_5xsoft.Close

set Data_5xsoft =nothing

end if

End Sub

Private function GetFilePath(FullPath)

If FullPath <> "" Then

GetFilePath = left(FullPath,InStrRev(FullPath, "\"))

Else

GetFilePath = ""

End If

End function

Private function GetFileExt(FullPath)

If FullPath <> "" Then

GetFileExt = mid(FullPath,InStrRev(FullPath, ".")+1)

Else

GetFileExt = ""

End If

End function

Private function GetFileName(FullPath)

If FullPath <> "" Then

GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)

Else

GetFileName = ""

End If

End function

End Class

Class FileInfo

dim FormName,FileName,FilePath,FileSize,FileExt,FileType,FileStart

Private Sub Class_Initialize

FileName = ""

FilePath = ""

FileSize = 0

FileStart= 0

FormName = ""

FileType = ""

FileExt = ""

End Sub

Public function SaveAs(FullPath)

dim dr,ErrorChar,i

SaveAs=true

if trim(fullpath)="" or FileStart=0 or FileName="" or right(fullpath,1)="/" then exit function

set dr=CreateObject("Adodb.Stream")

dr.Mode=3

dr.Type=1

dr.Open

Data_5xsoft.position=FileStart

Data_5xsoft.copyto dr,FileSize

dr.SaveToFile FullPath,2

dr.Close

set dr=nothing

SaveAs=false

end function

End Class

</SCRIPT>

upfile.asp:

<%OPTION EXPLICIT%>

<%Server.ScriptTimeOut=5000%>

<!--#include FILE="upload_5xsoft.inc"-->

<html>

<head>

<title>文件上傳</title>

</head>

<body>

<br>化境文件上傳!<hr size=1 noshadow width=300 align=left><br><br>

<%

dim upload,file,formName,formPath,iCount

set upload=new upload_5xsoft ''建立上傳對象

response.write upload.Version&"<br><br>" ''顯示上傳類的版本

if upload.form("filepath")="" then ''得到上傳目錄

HtmEnd "請輸入要上傳至的目錄!"

set upload=nothing

response.end

else

formPath=upload.form("filepath")

''在目錄後加(/)

if right(formPath,1)<>"/" then formPath=formPath&"/"

end if

iCount=0

for each formName in upload.objForm ''列出所有form數據

response.write formName&"="&upload.form(formName)&"<br>"

next

response.write "<br>"

for each formName in upload.objFile ''列出所有上傳了的文件

set file=upload.file(formName) ''生成壹個文件對象

if file.FileSize>0 then ''如果 FileSize > 0 說明有文件數據

file.SaveAs Server.mappath(formPath&file.FileName) ''保存文件

response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "&formPath&File.FileName&" 成功!<br>"

iCount=iCount+1

end if

set file=nothing

next

set upload=nothing ''刪除此對象

Htmend iCount&" 個文件上傳結束!"

sub HtmEnd(Msg)

set upload=nothing

response.write "<br>"&Msg&" [<a href=""javascript:history.back();"">返回</a>]</body></html>"

response.end

end sub

%>

</body>

</html>

測試文件upfile.html:

<html>

<head>

<title>化境上傳</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<style type="text/css">

<!--

td { font-size: 9pt}

a { color: #000000; text-decoration: none}

a:hover { text-decoration: underline}

.tx { height: 16px; width: 30px; border-color: black black #000000; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; font-size: 9pt; background-color: #eeeeee; color: #0000FF}

.bt { font-size: 9pt; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; height: 16px; width: 80px; background-color: #eeeeee; cursor: hand}

.tx1 { height: 20px; width: 30px; font-size: 9pt; border: 1px solid; border-color: black black #000000; color: #0000FF}

-->

</style>

</head>

<body bgcolor="#FFFFFF" text="#000000">

<form name="form1" method="post" action="upfile.asp" enctype="multipart/form-data" >

<table border="1" cellspacing="0" cellpadding="0" bordercolorlight="#000000" bordercolordark="#CCCCCC" width="91" height="23">

<tr>

<td align="left" valign="middle" height="18" width="18">?</td>

<td bgcolor="#CCCCCC" align="left" valign="middle" height="18" width="67"> 文件上傳</td>

</tr>

</table>

<br>

<input type="hidden" name="act" value="upload">

<br>

<table width="71%" border="1" cellspacing="0" cellpadding="5" align="center" bordercolordark="#CCCCCC" bordercolorlight="#000000">

<tr bgcolor="#CCCCCC">

<td height="22" align="left" valign="middle" bgcolor="#CCCCCC">?化境編程界文件上傳</td>

</tr>

<tr align="left" valign="middle" bgcolor="#eeeeee">

<td bgcolor="#eeeeee" height="92">

<script language="javascript">

function setid()

{

str='<br>';

if(!window.form1.upcount.value)

window.form1.upcount.value=1;

for(i=1;i<=window.form1.upcount.value;i++)

str+='文件'+i+':<input type="file" name="file'+i+'" style="width:400" class="tx1"><br><br>';

window.upid.innerHTML=str+'<br>';

}

</script>

<li> 需要上傳的個數

<input type="text" name="upcount" class="tx" value="1">

<input type="button" name="Button" class="bt" onclick="setid();" value="· 設定 ·">

</li>

<br>

<br>

<li>上傳到:

<input type="text" name="filepath" class="tx" style="width:350" value="">

</li>

</td>

</tr>

<tr align="center" valign="middle">

<td align="left" id="upid" height="122"> 文件1:

<input type="file" name="file1" style="width:400" class="tx1" value="">

</td>

</tr>

<tr align="center" valign="middle" bgcolor="#eeeeee">

<td bgcolor="#eeeeee" height="24">

<input type="submit" name="Submit" value="· 提交 ·" class="bt">

<input type="reset" name="Submit2" value="· 重執 ·" class="bt">

</td>

</tr>

</table>

</form>

</body>

</html>

<script language="javascript">

setid();

</script>

  • 上一篇:計算機網絡中如何選擇傳輸介質雙絞線或光纜型號的問題及其原因
  • 下一篇:請編程。
  • copyright 2024編程學習大全網