PIXNET Logo登入

【開源節流】--> "開源" & "節流"

跳到主文

好文章蒐集與文章分享,如有涉及版權~煩請告知馬上移除~謝謝~

部落格全站分類:生活綜合

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 9月 17 週五 201016:57
  • 轉:ASP中調用出現“ADODB.Recordset (0x800A0BB9)”

 
ASP中調用出現“ADODB.Recordset
(0x800A0BB9)”
引數中可能發生類型錯誤、超過可接受的定義範圍、或與其他引數發生衝突。
(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(1,043)

  • 個人分類:ASP
▲top
  • 8月 11 週一 200813:07
  • 轉:ASP刪除多筆資料並同時刪除多筆檔案製作教學

ASP刪除多筆資料並同時刪除多筆檔案製作教學
來源:http://www.dreamweaver.com.tw/forumDetail.asp?main_id=8531
  最近常常收到詢問要如何製作刪除資料又同時刪除檔案的方式,之前PO過的方式絕對可行,不能執行的原因有很多,請查閱相關書籍;但希望在此學習的朋友們,能多多分享自己的製作心得。
  從去年就有PO一篇刪除檔案的教學,有褒有貶,好不好用在於個人,但請製作成功的朋友,能多加動點腦筋去利用它製作更多不同的方式,不要太過依賴別人給你的東西,不然這樣是學不到什麼的;常常收到的那些信件中,也有詢問如何刪除多筆資料與檔案,因為本人工作還有課業繁忙,一直沒有時間去做這些東西,因為詢問的人實在太多了,小弟利用空餘的時間製作一個範例分享給大家。
  再這裏教導各位如何利用checkbox的方式,選擇要刪除的資料與同時刪除其相關的檔案,可多選刪除,請按照步驟做即可!如下:
(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(2,557)

  • 個人分類:ASP
▲top
  • 8月 08 週五 200815:17
  • 轉:ASP Stream 速查

ASP Stream 速查 來源:68design.net 

dim stream
set stream = Server.CreateObject("ADODB.Stream")
stream.mode = 3 '1-讀,2-寫,3-讀寫
stream.type = 1 '1-二進制,2-文本
stream.Open

dataStream.position = index
dataStream.CopyTo stream, count '將另一 Stream 對象 dataStream 從 index 到 index+count 的資料拷貝到 stream
stream.SaveToFile filePath, 2 '將 stream 資料保存為文件,第二個參數:1-不允許覆蓋,2-覆蓋寫入

stream.Close
set stream = nothing


常用屬性和方法
mode 讀寫模式,可選值:1-讀,2-寫,3-讀寫,其它不常用
type 資料類型,可選值:1-二進制,2-文本
charset 編碼方式,可選值:ascii,gb2312
position 資料流位置,表示資料操作從這里開始,第一個位置的值為 0,不是 1。
size 資料流大小(位元組)

LoadFromFile 從文件讀取資料到 Stream 對象,Stream 對象原有內容將被清空
SaveToFile 將 Stream 對象資料保存為文件,第二個參數:1-不允許覆蓋,2-覆蓋寫入
Open 打開資料流

Close 關閉資料流
Read([長度]) 從 Stream 對象中讀取二進制資料,不指定長度表示全部讀取
ReadText([長度]) 從 Stream 對象中讀取文本資料,不指定長度表示全部讀取
Write(buffer) 將緩存資料寫入 Stream 對象
WriteText(data, [option]) 將文本資料寫入 Stream 對象,第二個參數:0-字符寫入,1-行寫入
CopyTo(destStream, count) 將 Stream 對象的指定資料拷貝到 destStream

(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(1,020)

  • 個人分類:ASP
▲top
  • 8月 07 週四 200816:31
  • 轉:如何利用ASP把圖片上傳到資料庫

如何利用ASP把圖片上傳到資料庫  
發布於2005-11-10 17:50 來源:網海拾貝    --------------------------------------------------------------------------------
 
ASP(Active Server Pages)是Microsoft很早就推出的一種WEB應用程序解決方案,也是絕大多數從事網站開發人員很熟悉的一個比較簡單的程式化環境。通過ASP我們可以創建功能強大的動態的WEB應用程序。ASP雖然功能很強大,但有些功能用純ASP代碼完成不了,為了能保證開發出功能更加強大的WEB應用程序,我們可以借助調用COM組件。  在日常工作中,例如開發一個“商品網上銷售系統”吧,為了使顧客對商品的外觀有所了解,也就是顧客在看商品的文字介紹的同時在文字的旁邊有該商品的圖片加以說明,這樣顧客就可以對該商品有個系統的了解,對推銷商品有很大的幫助。所以我們在開發系統時當然就要加入圖片處理模塊,即如何把圖片上傳到服務器(圖片可以放在WEB服務器上某一個文件夾里也可以放在SQL Server服務器里)和如何讓上傳的圖片在瀏覽器端顯示出來,這都是開發人員要考慮到的問題。
(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(2,671)

  • 個人分類:ASP
▲top
  • 8月 07 週四 200816:25
  • 轉:修補upfile.asp上傳漏洞

修補upfile.asp上傳漏洞來源:http://www.zhuxuejun.com/article.asp?id=194ASP文件相關的一些函數。有以下幾個:
1. 得到文件擴展名
2. ASP上傳文件漏洞檢測
3. 格式化顯示文件大小
4. asp檢測上傳圖片是否為真實圖片
5. 上傳文件擴展名檢測
6. 取得文件對應的圖標
7. 下載文件等相關函數
(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(513)

  • 個人分類:ASP
▲top
  • 8月 07 週四 200815:03
  • 轉:ASP字符串函數大全

ASP字符串函數大全作者:未知 來源:未知 
函數
語法
功能
Len
Len(string|varname)
返回字符串內字符的數目,或是存儲一變量所需的位元組數。
Trim
Trim(string)
將字符串前后的空格去掉
Ltrim
Ltrim(string)
將字符串前面的空格去掉
Rtrim
Rtrim(string)
將字符串后面的空格去掉
Mid
Mid(string,start,length)
從string字符串的start字符開始取得length長度的字符串,如果省略第三個參數表示從start字符開始到字符串結尾的字符串
Left
Left(string,length)
從string字符串的左邊取得length長度的字符串
Right
Right(string,length)
從string字符串的右邊取得length長度的字符串
LCase
LCase(string)
將string字符串里的所有大寫字母轉化為小寫字母
UCase
UCase(string)
將string字符串里的所有大寫字母轉化為大寫字母
StrComp
StrComp(string1,string2[,compare])
返回string1字符串與string2字符串的比較結果,如果兩個字符串相同,則返回0,如果小於則返回-1,如果大於則返回1
InStr
InStr(string1,string2[,compare])
返回string1字符串在string2字符串中第一次出現的位置
Split
Split(string1,delimiter[,count[,start]])
將字符串根據delimiter拆分成一維數組,其中delimiter用於標識子字符串界限。如果省略,使用空格("")作為分隔符。count返回的子字符串數目,-1指示返回所有子字符串。start為1執行文本比較;如果為0或者省略執行二進制比較。
Replace
Replace(expression,find,replacewith[,compare[,count[,start]]])
返回字符串,其中指定數目的某子字符串(find)被替換為另一個子字符串(replacewith)。

補充:Asc Asc函數提取字符串第一個字母的ANSI字符碼。
用法為:result = Asc(string)
其中result是字符碼,string是任意有效的字符串表達式。如果string為Empty,則產生一個實時錯誤。
AscB AscB函數提取字符串的第一個位元組。
用法為:result = AscB(string)
其中result是Byte字類,string是任意有效的字符串表達式。如果string為Empty,則產生一個實時錯誤。
AscW AscW函數提取字符串第一個字母的Unicode字符碼。
用法為:result = AscW(string)
其中result是Unicode,string是任意有效的字符串表達式。如果string為Empty,則產生一個實時錯誤。
InStr InStr函數識別某個記號在字符串中的首字母位置。
用法為:newstart = InStr([start, ]source, token[, compare])
其中newstart時記號在字符串中的位置(如果沒有的話則為0),start是搜尋的起始位置,source是要搜尋的字符串,token是要定位的字符串,compare是比較類型(0表示二進制比較,1表示忽略大小寫的文本比較)。
InStrB InStrB函數是InStr的位元組版,識別某個記號在字符串中的首位元組位置。
用法為:newstart = InStrB([start, ]source, token[, compare])
其中newstart時記號在字符串中的首位元組位置(如果沒有的話則為0),start是搜尋的起始位置,source是要搜尋的字符串,token是要定位的字符串,compare是比較類型(0表示二進制比較,1表示忽略大小寫的文本比較)。
LCase LCase函數把字符串變為小寫形式。
用法為:result = LCase(string)
其中result是小寫字符串,string是任意有效的字符串表達式。
Left Left函數從字符串的起始處提取指定數目的字符。
用法為:result = Left(string,length)
其中result是字符串變量,string是有效的字符串表達式,length是表示返回多少字符的數值型表達式。
LeftB LeftB函數從字符串的起始處提取指定數目的位元組。
用法為:result = LeftB(string,length)
其中result是字符串變量,string是有效的字符串表達式,length是表示提取的位元組數的數值型表達式。
Len Len函數確定字符串的大小或存儲這個變量需要多少字符。
用法為:result = Len(string | varname)
其中,result是字符串中的字符數或存儲這個變量所需的位元組數,string是任意有效的字符串表達式,varname是變量名。
LenB Len函數確定字符串的大小或存儲這個變量需要多少位元組。
用法為:result = LenB(string | varname)
其中,result是字符串中的位元組數或存儲這個變量所需的位元組數,string是任意有效的字符串表達式,varname是變量名。
LTrim LTrim函數復制字符串並去掉前面的空格。
用法為:result = LTrim(string)
其中,result是去掉空格后的字符串,string是要去掉空格的有效字符串表達式。
Mid Mid函數從字符串的某個位置復制指定數目的字符。
用法為:result = Mid(string,start[,length])
其中,result是結果字符串,string是要從中復制字符的表達式,start是string中復制的起始位置,length是要復制的字符數。
MidB Mid函數從字符串的某個位置復制指定數目的位元組。
用法為:result = Mid(string,start[,length])
其中,result是結果字符串,string是要從中復制位元組的表達式,start是string中復制的起始位置,length是要復制的位元組數。
Right Right函數從字符串的尾部提取指定數目的字符。
用法為:result = Right(string,length)
其中result是字符串變量,string是有效的字符串表達式,length是表示返回多少字符的數值型表達式。
RightB RightB函數從字符串的起始處提取指定數目的位元組。
用法為:result = RightB(string,length)
其中result是字符串變量,string是有效的字符串表達式,length是表示提取的位元組數的數值型表達式。
RTrim RTrim函數復制字符串並去掉尾部的空格。
用法為:result = RTrim(string)
其中,result是去掉空格后的字符串,string是要去掉空格的有效字符串表達式。
String String函數構造含有多個相同字符的字符串。
用法為:result = String(number, character)
其中,result是字符串變量,number是返回字符串的長度,character是用來構造返回字符串的字符碼。
Trim Trim函數復制字符串並去掉首尾的空格。
用法為:result = Trim(string)
其中,result是去掉空格后的字符串,string是要去掉空格的有效字符串表達式。
UCase UCase函數把字符串變為大寫形式。
用法為:result = UCase(string)
其中result是大寫字符串,string是任意有效的字符串表達式。
字符串函數  [討論] 函數說明CBool資料轉Boolean類型Cdate資料轉Time類型CDbl資料轉Double類型Cint資料轉Integer類型CLng資料轉Lang類型Asc字符轉數字類型CStr數字轉String類型Chr數字轉字符類型Variant變量一般會將其代表的資料子類型自動轉換成合適的資料類型,但有時候,自動轉換也會造成一些資料類型不匹配的錯誤.這時,可使用轉換函數來強制轉換資料的子類型. 函數 功能 Asc 函數 返回與字符串的第一個字母對應的 ANSI 字符代碼。 Chr 函數 返回與指定的 ANSI 字符代碼相對應的字符 Hex 函數 返回表示十六進制數字值的字符串。 Oct 函數 返回表示數字八進制值的字符串。 CStr 函數 返回表達式,該表達式已被轉換為 字符串 子類型。 CDate 函數 返回表達式,此表達式已被轉換為 日期 子類型。 CInt 函數 返回表達式,此表達式已被轉換為 整數 子類型。 CLng 函數 返回表達式,此表達式已被轉換為 長整數 子類型 CSng 函數 返回表達式,該表達式已被轉換為 Single 子類型 CDbl 函數 返回表達式,此表達式已被轉換為 Double 子類型 CBool 函數 返回表達式,此表達式已轉換為 布爾 子類型 1、Asc 函數示例 下面例子中, Asc 返回每一個字符串首字母的 ANSI 字符代碼: Dim MyNumber MyNumber = Asc("A") '返回 65。 MyNumber = Asc("a") '返回 97。 MyNumber = Asc("Apple") '返回 65。 2、Chr 函數示例 下面例子利用 Chr 函數返回與指定的字符代碼相對應的字符: Dim MyChar MyChar = Chr(65) '返回 A。 MyChar = Chr(97) '返回 a。 MyChar = Chr(62) '返回 >。 MyChar = Chr(37) '返回 %。 3、Hex 函數示例 下面的示例利用 Hex 函數返回數字的十六進制數: Dim MyHex MyHex = Hex(5) ' 返回 5。 MyHex = Hex(10) ' 返回A。 MyHex = Hex(459) ' 返回 1CB。 4、Oct 函數示例 下面的示例利用 Oct 函數返回數值的八進制數: Dim MyOct MyOct = Oct(4) ' 返回 4。 MyOct = Oct(8) ' 返回 10。 MyOct = Oct(459) ' 返回 713。 5、 CStr 函數示例 <%num1=666StrWelcome="歡迎第"&CStr(num1)&"個來訪者"%> CStr將變量num1由整數子類型強制轉換為字符串子類型 6、CDate 函數示例 MyDate = "October 19, 1962" ' 定義日期。 MyShortDate = CDate(MyDate) ' 轉換為日期資料類型。 MyTime = "4:35:47 PM" ' 定義時間。 MyShortTime = CDate(MyTime) ' 轉換為日期資料類型。 7、CInt 函數示例 Dim MyDouble, MyInt MyDouble = 2345.5678 ' MyDouble 是 Double。 MyInt = CInt(MyDouble) ' MyInt 包含 2346。 8、CLng 函數示例 Dim MyVal1, MyVal2, MyLong1, MyLong2 MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1, MyVal2 是雙精度值。 MyLong1 = CLng(MyVal1) ' MyLong1 25427。 MyLong2 = CLng(MyVal2) ' MyLong2 包含 25428 。 9、CBool 函數示例 Dim A, B, Check A = 5: B = 5 ' 初始化變量。 Check = CBool(A = B) '復選框設為 True 。 A = 0 '定義變量。 Check = CBool(A) '復選框設為 False
10、asp vb中Len和LenB函數用法!
VB    中字串是    UniCode    格式,我們就知道    Len("ABC測試")    等於    5    ,   LenB("ABC測試")    等於10,當然,因為    Win9x    系統內部並不使用    UniCode    ,所以在和    API    接口時就會出現問題了。我們經常可以見到    API    的聲明函數最后由一個“A”,比如“SetWindowTextA”“GetPrivateProfileStringA”等等,這是表明此函數使用    ANSI    字符串格式;相對的,也有使用    UniCode格式字串的相同功能的函數,后綴為“U”,比如“SetWindowTextU”“GetPrivateProfileStringU”等等,不過這些    UniCode    格式的函數一般僅用於    Windows    NT    ,Windows    9x    上很少有,另外,因為    Windows    NT    也支持    ANSI    格式的函數,所以平時我們調用的仍然是    ANSI格式的函數,也所以    VB    在調用    API    時,都會把字串轉換成字符串,以便和    ANSI    函數相兼容。       
    
Len和LenB函數    
           Visual    Basic有兩個返回字符串長度的函數:Len和LenB。它們都可以接收一個BSTR或是一個ANSI    BSTR,並且返回一個長整型數值。以下的代碼說明了一切:    
           s    =    "help"    
           Debug.Print    Len(s),   LenB(s)    
           Debug.Print    Len(StrConv(s,    vbFromUnicode)),   LenB(StrConv(s,    vbFromUnicode))    
           輸出結果是:    
           4                    8    
           2                    4    
           這表明,Len返回的是字符數,而LenB返回的是在BSTR中的位元組數。
(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(1) 人氣(18,306)

  • 個人分類:ASP
▲top
  • 8月 07 週四 200809:23
  • 轉:簡單的ASP無組件上傳原理實踐總結!

簡單的ASP無組件上傳原理實踐總結!
來源:Posted on 2008-02-25 08:37 藍箭GZ、我的原創文章
(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(1,177)

  • 個人分類:ASP
▲top
  • 8月 06 週三 200815:55
  • 轉:用純ASP代碼實現圖片上傳(將圖片寫入料庫~非上傳到指定資料夾)

用純ASP代碼實現圖片上傳(將圖片寫入料庫~非上傳到指定資料夾)http://www.diybl.com/ 2007-6-17  作者:趕流行  用ASP編寫網站應用程序時間長了,難免會遇到各式各樣的問題,其中關於如何上傳文件到服務器恐怕是遇見最多的問題了,尤其是上傳圖片,比如你想要在自己的社區里面實現類似網易虛擬社區提供的“每日一星”的功能,就要提供給網友上傳照片的功能。上傳圖片文件到服務器可以使用各種免費的文件上傳組件,使用起來功能雖然很強大,但是由於很多情況下,我們只能使用免費的支持ASP的空間或者租用別人的虛擬空間,對於第一種情況,我們根本就沒有可能來使用文件上傳組件;至於第二種情況,我們也要付出不少的“銀子”才可以。除非你擁有自己的虛擬主電腦,你就可以隨便的在服務器上面安裝自己所需要的組件,這種情況對於大多數人來說是可望而不可及的。那我們就沒有辦法了嗎?呵呵,答案是肯定的(當然是肯定的了,要不然我也沒法寫出這篇文章啊)。下面就讓我們一起來使用純ASP代碼來實現圖片的上傳以及保存到資料庫的功能(順便也實現顯示資料庫中的圖片到網頁上的功能)。
  首先我們先來熟悉一下將要使用的對象方法。我們用來獲取上一個頁面傳遞過來的資料一般是使用Request對象。同樣的,我們也可以使用Request對象來獲取上傳上來的文件資料,使用的方法是Request.BinaryRead()。而我們要從資料庫中讀出來圖片的資料顯示到網頁上面要用到的方法是:
Request.BinaryWrite()。在我們得到了圖片的資料,要保存到資料庫中的時候,不可以直接使用Insert語句對資料庫進行操作,而是要使用ADO的AppendChunk方法,同樣的,讀出資料庫中的圖片資料,要使用GetChunk方法。各個方法的具體語法如下:
*Request.BinaryRead語法:
variant=Request.BinaryRead(count)
參數
variant
返回值保存著從客戶端讀取到資料。
count
指明要從客戶端讀取的資料量大小,這個值小於或者等於使用方法Request.TotalBytes得到的資料量。
*Request.BinaryWrite語法:
Request.BinaryWritedata
參數
data
要寫入到客戶端瀏覽器中的資料包。
*Request.TotalBytes語法:
variant=Request.TotalBytes
參數
variant
返回從客戶端讀取到資料量的位元組數。
*AppendChunk語法
將資料追加到大型文本、二進制資料Field或Parameter對象。
object.AppendChunkData
參數
objectField或Parameter對象
Data變體型,包含追加到對象中的資料。
說明
使用Field或Parameter對象的AppendChunk方法可將長二進制或字符數
  據填寫到對象中。在系統記憶體有限的情況下,可以使用AppendChunk方法對長整型值進行部分而非全部的操作。
*GetChunk語法
返回大型文本或二進制資料Field對象的全部或部分內容。
variable=field.GetChunk(Size)
返回值
返回變體型。
參數
Size長整型表達式,等於所要檢索的位元組或字符數。
說明
  使用Field對象的GetChunk方法檢索其部分或全部長二進制或字符資料。在系統記憶體有限的情況下,可使用GetChunk方法處理部分而非全部的長整型值。
GetChunk調用返回的資料將賦給“變量”。如果Size大於剩余的資料,則
GetChunk僅返回剩余的資料而無需用空白填充“變量”。如果字段為空,則
GetChunk方法返回Null。
  每個后續的GetChunk調用將檢索從前一次GetChunk調用停止處開始的資料。但是,如果從一個字段檢索資料然后在當前記錄中設置或讀取另一個字段的值,ADO將認為已從第一個字段中檢索出資料。如果在第一個字段上再次調用GetChunk方法,ADO將把調用解釋為新的GetChunk操作並從記錄的起始處開始讀取。如果其他Recordset對象不是首個Recordset對象的副本,則訪問其中的字段不會破坏GetChunk操作。
如果Field對象的Attributes屬性中的adFldLong位設置為True,則可以對該字段使用GetChunk方法。
如果在Field對象上使用Getchunk方法時沒有當前記錄,將產生錯誤3021(無當前記錄)。
  接下來,我們就要來設計我們的資料庫了,作為測試我們的資料庫結構如下(access2000):
字段名稱    類型    描述
  id   自動編號   主鍵值
img OLE對象   用來保存圖片資料 
對於在MSSQLServer7中,對應的結構如下:
字段名稱    類型    描述
  id    int(Identity)  主鍵值
img   image    用來保存圖片資料 
現在開始正式編寫我們的純ASP代碼上傳部分了,首先,我們有一個提供給使用者的上傳界面,可以讓使用者選擇要上傳的圖片。代碼如下
(upload.htm):
注意enctype="multipart/form-data",一定要在Form中有這個屬性,否則,將無法得到上傳上來的資料。接下來,我們要在process.asp中對從瀏覽器中獲取的資料進行必要的處理,因為我們在process.asp中獲取到的資料不僅僅包含了我們想要的上傳上來的圖片的資料,也包含了其他的無用的資訊,我們需要剔除冗余資料,並將處理過的圖片資料保存到資料庫中,這里我們以access2000為例。具體代碼如下(process.asp):好了,這下我們就把上傳來的圖片保存到了名為images.mdb的資料庫中了,剩下的工作就是要將資料庫中的圖片資料顯示到網頁上面了。一般在HTML中,顯示圖片都是使用標簽,也就是,但是我們的圖片是保存到了資料庫中,“圖片路徑”是什麼呢?呵呵,其實這個SRC屬性除了指定路徑外,也可以這樣使用哦:所以,我們所要做的就是在showimg.asp中從資料庫中讀出來符合條件的
資料,並返回到SRC屬性中就可以了,具體代碼如下(showimg.asp):注意在輸出到瀏覽器之前一定要指定Response.ContentType="image/*",
以便正常顯示圖片。
最后要注意的地方是,我的process.asp中作的處理沒有考慮到第一頁(upload.htm)中還有其他資料,比如等等,如果有這些項目,你的process.asp就要注意處理掉不必要的資料。
(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(1,518)

  • 個人分類:ASP
▲top
  • 8月 06 週三 200815:16
  • 轉:ASP無組件上傳類代碼詳細說明

ASP無組件上傳類代碼詳細說明
來源:http://hi.baidu.com/tianguipeng/blog/item/9a6832c6b936e4189c163d07.html
2007年09月22日 星期六 14:55
本文講述ASP無組件上傳類代碼詳細說明,此上傳類是在化境程式化界發布的無組件上傳類的基礎上修改的,在與化境程式化界無組件上傳類相比,速度快了將近50倍。
<iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-3795982983039684&dt=1190444013453&lmt=1190444013&format=300x250_as&output=html&correlator=1190444013390&channel=0503227947&url=http%3A%2F%2Fwww.mobanku.com%2Ffile%2Fasp%2F00533.asp&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=008000&color_border=FFFFFF&ad_type=text&ref=http%3A%2F%2Fcache.baidu.com%2Fc%3Fword%3Dasp%253B%25C0%25E0%253B%25B5%25C4%253B%25CF%25EA%25CF%25B8%253B%25CB%25B5%25C3%25F7%26url%3Dhttp%253A%2F%2Fwww%252Emobanku%252Ecom%2Ffile%2Fasp%2F00533%252Easp%26p%3D9e6fc64ad6c911a05ee7d73756649d%26user%3Dbaidu&cc=169&ga_vid=679029804.1190444013&ga_sid=1190444013&ga_hid=1596244964&flash=9&u_h=768&u_w=1280&u_ah=738&u_aw=1280&u_cd=32&u_tz=480&u_his=1&u_java=true" frameborder="0" width="300" scrolling="no" height="250" allowtransparency="allowtransparency"> 
(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(968)

  • 個人分類:ASP
▲top
  • 8月 06 週三 200814:59
  • 轉:ASP實現圖文混合上傳,無須資料庫(一)

ASP實現圖文混合上傳,無須資料庫(一)
來源:網路流傳
真正無組件圖文混合上傳,無須資料庫,支援中文!
該程式支援任何文本和二進製格式文件的上傳;支援文件表單域和普通表單域混合上傳;支援中文文件名;支援覆蓋上傳和文件同名時自動修改文件名;支援同時上傳多個文件,而且多個文件表單域名可以相同;支援上傳文件大小的控製 我自己感覺很不錯喲:)
本程式無須任何資料庫支援,直接將上傳的文件保存到服務器指定的路徑下。
測試環境:Windows2000 + IIS 5.0(對ADO版本有要求)
已知BUG:利用相同文件表單名以唯一文件名方式同時上傳多個文件,且服務器上存在多個相同文件名時,隻有第一個文件會自動改名上傳成功,然後程式報錯。
源代碼如下,歡迎大家參考指正:
文件名:UploadX.asp
<%
Dim FormData, FormSize, Divider, bCrLf
FormSize = Request.TotalBytes
FormData = Request.BinaryRead(FormSize)
bCrLf = ChrB(13) & ChrB(10)
Divider = LeftB(FormData, InStrB(FormData, bCrLf) - 1)
'將上傳的文件保存到path所指定的目錄下面。
'Formfield 上傳表單的"file"域名
'Path 要保存文件的服務器絕對路徑,形式為:"d:\path\subpath"或"d:\path\subpath\"
'MaxSize 限制上傳文件的最大長度,以KByte為單位
'SavType 服務器保存文件的方式:
' 0 唯一文件名方式,如果有同名則自動改名;
' 1 報錯方式,如果有同名則出錯;
' 2 覆蓋方式,如果有同名則覆蓋原來的文件\r
Function SaveFile(FormFileField, Path, MaxSize, SavType)
Dim StreamObj,StreamObj1
Set StreamObj = Server.CreateObject("ADODB.Stream")
Set StreamObj1 = Server.CreateObject("ADODB.Stream")
StreamObj.Mode = 3
StreamObj1.Mode = 3
StreamObj.Type = 1
StreamObj1.Type = 1
SaveFile = ""
StartPos = LenB(Divider) + 2
FormFileField = Chr(34) & FormFileField & Chr(34)
If Right(Path,1) <> "\" Then
Path = Path & "\"
End If
Do While StartPos > 0
strlen = InStrB(StartPos, FormData, bCrLf) - StartPos
SearchStr = MidB(FormData, StartPos, strlen)
If InStr(bin2str(SearchStr), FormFileField) > 0 Then
FileName = bin2str(GetFileName(SearchStr,path,SavType))
If FileName <> "" Then
FileStart = InStrB(StartPos, FormData, bCrLf & bCrLf) + 4
FileLen = InStrB(StartPos, FormData, Divider) - 2 - FileStart
If FileLen <= MaxSize*1024 Then
FileContent = MidB(FormData, FileStart, FileLen)
StreamObj.Open
StreamObj1.Open
StreamObj.Write FormData
StreamObj.Position=FileStart-1
StreamObj.CopyTo StreamObj1,FileLen
If SavType =0 Then
SavType = 1
End If
StreamObj1.SaveToFile Path & FileName, SavType
StreamObj.Close
StreamObj1.Close
If SaveFile <> "" Then
SaveFile = SaveFile & "," & FileName
Else
SaveFile = FileName
End If
Else
If SaveFile <> "" Then
SaveFile = SaveFile & ",*TooBig*"
Else
SaveFile = "*TooBig*"
End If
End If
End If
End If
If InStrB(StartPos, FormData, Divider) < 1 Then
Exit Do
End If
StartPos = InStrB(StartPos, FormData, Divider) + LenB(Divider) + 2
Loop
End Function
Function GetFormVal(FormName)
GetFormVal = ""
StartPos = LenB(Divider) + 2
FormName = Chr(34) & FormName & Chr(34)
Do While StartPos > 0
strlen = InStrB(StartPos, FormData, bCrLf) - StartPos
SearchStr = MidB(FormData, StartPos, strlen)
If InStr(bin2str(SearchStr), FormName) > 0 Then
ValStart = InStrB(StartPos, FormData, bCrLf & bCrLf) + 4
ValLen = InStrB(StartPos, FormData, Divider) - 2 - ValStart
ValContent = MidB(FormData, ValStart, ValLen)
If GetFormVal <> "" Then
GetFormVal = GetFormVal & "," & bin2str(ValContent)
Else
GetFormVal = bin2str(ValContent)
End If
End If
If InStrB(StartPos, FormData, Divider) < 1 Then
Exit Do
End If
StartPos = InStrB(StartPos, FormData, Divider) + LenB(Divider) + 2
Loop
End Function
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
Function str2bin(str)
For i = 1 To Len(str)
str2bin = str2bin & ChrB(Asc(Mid(str, i, 1)))
Next
End Function
Function GetFileName(str,path,savtype)
Set fs = Server.CreateObject("Scripting.FileSystemObject")
str = RightB(str,LenB(str)-InstrB(str,str2bin("filename="))-9)
GetFileName = ""
FileName = ""
For i = LenB(str) To 1 Step -1
If MidB(str, i, 1) = ChrB(Asc("\")) Then
FileName = MidB(str, i + 1, LenB(str) - i - 1)
Exit For
End If
Next
If savtype = 0 and fs.FileExists(path & bin2str(FileName)) = True Then
hFileName = FileName
rFileName = ""
For i = LenB(FileName) To 1 Step -1
If MidB(FileName, i, 1) = ChrB(Asc(".")) Then
hFileName = LeftB(FileName, i-1)
rFileName = RightB(FileName, LenB(FileName)-i+1)
Exit For
End If
Next
For i = 0 to 9999
'hFileName = hFileName & str2bin(i)
If fs.FileExists(path & bin2str(hFileName) & i & bin2str(rFileName)) = False Then
FileName = hFileName & str2bin(i) & rFileName
Exit For
End If
Next
End If
Set fs = Nothing
GetFileName = FileName
End Function
%>
文件名:upload.htm<html><head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>
<body><form method="POST" action="upload.asp" enctype="multipart/form-data">
<p>姓名:<input type="text" name="name" size="20"></p>
<p>城市:<input type="text" name="city" size="20"></p>
<p>愛好:1、<input type="text" name="lover" size="10"> 2、<input type="text" name="lover" size="10"></p>
<p>性別:<input type="radio" value="男" checked name="sex">男 
<input type="radio" name="sex" value="女">女</p> 
<p>省份:<select size="1" name="province">
<option selected value="屏東">屏東</option>
<option value="高雄">高雄</option>
</select></p>
愛好(補充):3、<input type="text" name="lover" size="10"> 4、<input type="text" name="lover" size="10">
<p>作品1:<input type="file" name="fruit" size="20"></p>
<p>作品1:<input type="file" name="fruit" size="20"></p>
<p>作品2:<input type="file" name="fruit2" size="20"></p>
<p><input type="submit" value="提交" name="subbutt"><input type="reset" value="全部重寫" name="rebutt"></p>
</form>
</body></html>


文件名:upload.asp

<%@ LANGUAGE = VBScript %>
<!-- #include file="uploadx.asp" -->
<%
Response.Write "<br>Name=""" & GetFormVal("name") & """"
Response.Write "<br>Sex=""" & GetFormVal("sex") & """"
Response.Write "<br>province=""" & GetFormVal("province") & """"
Response.Write "<br>city=""" & GetFormVal("city") & """"
Response.Write "<br>lover=""" & GetFormVal("lover") & """"
dim filename
path = Server.MapPath("./")
filename = SaveFile("fruit",path,1024,0)
If filename <> "*TooBig*" Then
Response.Write "<br><br>""" & filename & """已經上傳"
Else
Response.Write "<br><br>文件超出限制太大"
End IF

filename = SaveFile("fruit2",path,1024,0)
If filename <> "*TooBig*" Then
Response.Write "<br><br>""" & filename & """已經上傳"
Else
Response.Write "<br><br>文件超出限制太大"
End IF
%>

(繼續閱讀...)
文章標籤

sleepingwolf 發表在 痞客邦 留言(0) 人氣(719)

  • 個人分類:ASP
▲top
12...4»

文章搜尋

文章分類

toggle 我的紀錄 (4)
  • 行事曆 (0)
  • 房屋家電預算 (14)
  • 結婚資料 (11)
  • 我的隨筆 (10)
toggle 藝術&設計 (5)
  • Graphics_Design (1)
  • 藝術類文章 (5)
  • 工業設計 (23)
  • 設計類文章 (31)
  • 設計名詞 (1)
toggle 網站網頁設計 (8)
  • ASP (34)
  • CSS (5)
  • JavaScript (5)
  • SQL (1)
  • 網頁知識教學 (6)
  • Flash (4)
  • 架站伺服器 (7)
  • PHP (3)
toggle 電腦軟體網路 (6)
  • 網路網站新知 (14)
  • 系統軟體 (8)
  • Internet (12)
  • 繪圖軟體 (2)
  • 文書軟體 (2)
  • 軟體新知介紹 (1)
toggle 電腦硬體知識 (4)
  • 硬體資訊 (18)
  • 硬碟 (2)
  • 主機板 (3)
  • 光碟機 (2)
toggle 科技軟硬體知識 (7)
  • Android TV stick (7)
  • 科技知識 (23)
  • 科技名詞 (4)
  • 手機相關 (8)
  • 汽車 (25)
  • apple-iPad (3)
  • apple-iphone (10)
toggle 3D&CAID軟體 (8)
  • CINEMA 4D (12)
  • Creo2.0 (2)
  • 3DS Max (3)
  • 3D資訊知識 (14)
  • Pro/Engineer (7)
  • Rhino (3)
  • Solidworks (1)
  • NX/Unigraphic (1)
toggle 生活常識新聞 (6)
  • 生活資訊 (19)
  • 思考成長 (71)
  • 輕鬆一下 (1)
  • 醫療健康習慣 (22)
  • 交通運輸 (7)
  • 常識知識 (7)
toggle 休閒旅遊娛樂 (2)
  • 遊戲相關 (13)
  • 旅遊+美食 (4)
toggle 結婚孕育小孩 (5)
  • 教育 (1)
  • 男女相處 (10)
  • 孕嬰坐月子 (37)
  • 取名子相關 (21)
  • 結婚 (7)
toggle 居家購屋 (2)
  • 裝潢 (3)
  • 購屋 (29)
toggle 投資理財 (6)
  • 期貨選擇權 (4)
  • 基金 (2)
  • 股票 (103)
  • 投資+理財 (65)
  • 保險 (9)
  • 產業動態 (1)
toggle 創業管理 (5)
  • 成功故事 (6)
  • 創業管理通路 (21)
  • 職涯規劃 (9)
  • 面試履歷 (18)
  • 職場工作能力 (17)
toggle 語文學習 (1)
  • English (2)
  • 未分類文章 (1)

文章彙整

參觀人氣

  • 本日人氣:
  • 累積人氣: