我研究了一下無組件上傳,并作出了一個最簡單可行的方法 ----用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 >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) %>
如果你的鍵盤上ctrl+C +V鍵都已經被你按壞了的話,沒關系我還給大家提供了相應的測試地點
http://www.cgfront.com/up/uup.htm
最后希望大家多多指教。
|