這是大陸的網站COPY下來的
, 只是修改了一下
不過基本上,只要是檔案它都可以存
主要不一樣的地方是在這一行
Response.ContentType = "image/*"
只要加上這一行就無法顯示圖片
upload.asp
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post"
action="process.asp" enctype="multipart/form-data">
<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">
Sobina
</td>
</tr>
<tr align="left" valign="middle"
bgcolor="#eeeeee">
<td bgcolor="#eeeeee">
<br>
</td>
</tr>
<tr align="center" valign="middle">
<td align="left" id="upid"
height="122">
<p>檔案來源: <input type="file"
name="img" style="width:400"
class="tx1" value="">
</p>
<p>notes: <input type="text"
name="imginfo">
</p>
</td>
</tr>
<tr align="center" valign="middle"
bgcolor="#eeeeee">
<td bgcolor="#eeeeee" height="2">
<input type="submit" name="Submit"
value="· 送出 ·" class="bt">
<input type="reset" name="Submit2"
value="· 清除重填 ·" class="bt">
</td>
</tr>
</table>
</form>
</body>
</html>
process.asp
<%
response.expires=0
'目的:將二進位轉成成十進位
Function bin2str(binstr)
Dim varlen,clow,ccc,skipflag
skipflag=0
ccc = ""
varlen=LenB(binstr)
For i=1 To varlen
If skipflag=0 Then
clow = MidB(binstr,i,1)
If AscB(clow) > 127 Then
ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) &
clow))
skipflag=1
Else
ccc = ccc & Chr(AscB(clow))
End If
Else
skipflag=0
End If
Next
bin2str = ccc
End Function
'目的:把表單中的影象數據分離出
'其中formsize表式檔案的大小,formdata表示的數據
Function ImageUp(formsize,formdata)
bncrlf=chrb(13) & chrb(10)
divider=leftb(formdata,instrb(formdata,bncrlf)-1)
'formdata第一bncrlf左邊的數據
datastart=instrb(formdata,bncrlf & bncrlf)+4
'bncrlf右邊的數據的起始位
dataend=instrb(datastart+1,formdata,divider)-datastart
Imageup=midb(formdata,datastart,dataend)
End Function
'目的:把表單中的數量值取出
'其中varName要找的字段數量,strTXT已影像中分離出來的所有文本
Function findVar(varName,strTxt)
startPos=1
strLen=len(varName)+2
'表單中可能有多個同名數量(用在有主表與表中的數據更新中)
for i=1 to len(strTXT)
varStart=instr(startPos,strTXT,varName)+strLen+3
varEnd=instr(varStart,strTXT,"--")-2
varValLen=varEnd-varStart
inVar=mid(strTXT,varStart,varValLen)
findVar=findVar & inVar
startPos=instr(varStart,strTXT,varName)
if startPos=0 then exit for
'如果找不到則退出循環
findVar=findVar & "," '
以","作多同名量值的分隔符,上本例倒不需要
next
End
function
FormSize
= Request.TotalBytes
FormData = Request.BinaryRead( FormSize )
Image = ImageUp(FormSize,Formdata)
'以下步驟不能省略,否則取不出文字
strTXT=mid(formdata,instr(formdata,image)+len(image)+1)
'取出文字
strTXT=bin2str(strTXT) '二進位轉成普通文字
imginfo=findVar("imginfo",strTXT)
'相當於request.form("imginfo")
'MyArray = Split(imginfo, ",", -1,
1) '分離imginfo返回的多數值,在本例子中不用
response.BinaryWrite Image
'如果要存資料庫,只要把欄位開成IMG
'如果要存成二進位檔,可以用下面的方法
'pp=server.mappath("1.gif")
'Set
obj = Server.CreateObject("ADODB.Stream")
'obj.Open
'obj.Type = 1 ' 1 表示 binary 資料,2 是文字資料
'obj.Write image ' 將 binary 資料寫進 Stream 物件
'obj.SaveToFile pp,2
%>
--------------------------------------------------------------------------------
提供者: 常運動的胖子 ( eddiecclin@pchome.com.tw
)
[校稿:藍色小舖 ] |