我研究了一下無組件上傳,並作出了一個最簡單可行的方法
----用9行代碼真正實現無組件上傳,怎麼說來花了才半天就寫了9行代碼算是有點效率和成果。
於是就寫了這篇文章。
formSize=Request.TotalBytes()
formData=Request.BinaryRead(formSize)
DataHeader=LeftB(formData,InStrB(formData,Chrb(13)&Chrb(10)))
strFileData=MIDB(formData,LenB(DataHeader),LenB(formData)-LenB(DataHeader)*2-3)
HeaderPos2=InStrB(strFileData,ChrB(AscB("-"))&ChrB(AscB("T"))&ChrB(AscB("y"))&ChrB(AscB("p"))&C
hrB(AscB("e")))
HeaderPos3=InStrB(HeaderPos2,strFileData,Chrb(13))
DataHeader2=LeftB(strFileData,HeaderPos3+4)
strFileData=MIDB(strFileData,LenB(DataHeader2),LenB(strFileData))
Response.binaryWrite(strFileData)
DataHeader--檔案頭
strFileData--去處檔案頭後的資料,最後的輸出值
HeaderPos2--Content-Type:的位置
HeaderPos3--例如:Content-Type:image/gif的位置
DataHeader2--整個前面的檔案頭
思想:
1。先直接去掉檔案頭和尾(例如-----------------------------7d230d1f940277)
2。跳過前面所有資訊直接尋找Content-Type:image/gif
3。提取有用的資訊和欄位
4。資料都提出來了至於怎麼儲存就簡單了。至於用FSO或Adodb.Stream就隨你了。
問題:
有人可能會講一個表單不可能只有一個file
這樣的話你的資料就不能用這麼簡單的辦法正常提取了
其實也好辦你把他們分開做不就就完了:)
下面是完整執行個體
uup.htm
<html>
<a href="http://www.cgfront.com">www.cgfront.com</a>
<form name="loadfromfile" action="uup.asp" method="post" enctype="multipart/form-data">
<input type="submit" name="submit" value="OK">
<input type="file" name="loadfromfile" style="width:400" value="">
</form>
</html>
uup.asp
<%
formSize=Request.TotalBytes()
formData=Request.BinaryRead(formSize)
DataHeader=LeftB(formData,InStrB(formData,Chrb(13)&Chrb(10)))
strFileData=MIDB(formData,LenB(DataHeader),LenB(formData)-LenB(DataHeader)*2-3)
HeaderPos2=InStrB(strFileData,ChrB(AscB("-"))&ChrB(AscB("T"))&ChrB(AscB("y"))&ChrB(AscB("p"))&C
hrB(AscB("e")))
HeaderPos3=InStrB(HeaderPos2,strFileData,Chrb(13))
DataHeader2=LeftB(strFileData,HeaderPos3+4)
strFileData=MIDB(strFileData,LenB(DataHeader2),LenB(strFileData))
Response.binaryWrite(strFileData)
%>