亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

用ASP和VBScript上載文件(一)

2024-05-04 11:06:13
字體:
來源:轉載
供稿:網友
從瀏覽器上載文件是從客戶機向服務器傳遞文件的一個簡易方法。從第三代瀏覽器netscape和 microsoft起,多數瀏覽器都可以向服務器上載文件,而不需要向用戶提供特殊的訪問方式或軟件。
  
  一些asp組件是為文件上載而設計的,例如:
  posting acceptor
  ( microsoft siteserver的一部分),
  aspsmartupload(advantys),
  aspupload (persistssoftware),
  sa-fileupsoftware artisants)
  
    本文的開始將告訴你關于創建這類組件的信息,而這些組件通常使用vb、c++或java。
  
    這些組件的問題在于它們是第三方產品而非標準asp的一部分。作為第三方組件,必須在服務器上進行安裝。這就意味著必須在服務器上復制dll并注冊。大多數的主機系統不允許在他們的服務器上進行這樣的設置,因為有可能發生配置問題(尤其是虛擬主機)。第二個缺點是它們大部分不是免費的,不提供源代碼,也就不能根據需要進行定制。
  
    因此我需要編寫vbscript代碼來解決文件上載的問題。這不是一個必然的選擇,因為vbscript是一種腳本語言,只能使用variants數據類型,并且不能提供許多管理二進制數據和字節數組的內置函數。
  
    要理解上載的過程,首先要知道數據用http協議從瀏覽器發送到服務器的方式。這就意味著要理解“ multipart/form-data” (多部分/格式-數據)的表單提交。
  
  上載表單
  
    通常情況下,使用html表單從瀏覽器向服務器傳遞數據。這個表單中可能包含文本域、檢驗框、按鈕以及上載文件的文件類型控制。使用者用自己的數據填充并將這個表提交給服務器。
  
    表單元素中的 enctype 屬性規定了傳遞給服務器的表數據集編碼的內容類型。enctype 屬性的默認值是“application/x-www-form-urlencoded”,但當向服務器傳送大量文本、包含非ascii字符或二進制數的數據時,這個默認類型就不能勝任了。這時,文件上載提交表單時應使用“multipart/form-data”內容類型。
  
    一個“multipart/form-data”信息包含一系列部件,每個部件都可能包含:
  一個content-disposition(內容-處理)頭,其值為"form-data" ;一個規定控制名的name(名稱)屬性。
  
    對于一個文件類型控制,一個部件可能包含更多信息:
  在客戶機上規定原始路徑和文件名的filename(文件名)屬性;所發送的二進制數據控制的content-type (內容-類型)頭。
  
    在這些頭的后面跟隨著控制的二進制或文本內容。
  
    以下例子說明“multipart/form-data”的編碼,客戶機的瀏覽器應有這個表單:
  
  如果這個表單被提交,在服務器上可讀到這些請求:
  
  -----------------------------7cf87224d2020a
  content-disposition: form-data; name="email"
  [email protected]
  -----------------------------7cf87224d2020a
  content-disposition: form-data; name="blob"; filename="c:/image.gif"
  content-type: image/pjpeg
  
  -----------------------------7cf87224d2020a
  content-disposition: form-data; name="enter"
  submit query
  -----------------------------7cf87224d2020a--
  
    當那個內容作為響應被傳送回客戶機時就會被顯示出來。應該用request.binaryread 和response.binarywrite 方法讀和寫二進制數據。
  
  〈%
  response.binarywrite(request.binaryread(request.totalbytes))
  %〉
  
  可以看到響應的各部分用分界線來劃分:
  -----------------------------7cf87224d2020a
  最后一個分界線后面跟隨的是’ -- ’ 。
  
    每一個控制都有一個content-disposition 。name屬性識別由html表發送的控制(email、blob和enter)。 對于一個文件類型控制(blob),
  文件名也是content-disposition 頭的一部分,content-type 頭給出二進制 數據的內容類型。
  
  上載腳本
  
    上面所有內容都必須經過分解。在vb 或 c++中, 這非常明顯,因為為此提供了許多對象和方法。在vbscript 中,必須使用語言所提供的一些函數,并要解決vbscript中使用的雙字節編碼的變量字符串的問題。
  
  vbscript函數
  
    原始數據是二進制格式,所以必須使用專為管理二進制數據而設計的vbscript函數。因為我們將原始數據作為一個字節的字符串來考慮, 所以 midb、instrb 和 lenb 函數就有用了。 但是要避免vbscript的classic字符串,因為它們是雙字節編碼的字符串,不適宜分解成單字節。
  
    這些是vbscript函數中僅有的用來分解字節的函數。還需要一個方法,從被分解的數據中得到雙字節編碼的字符串,這樣就可以使用vbscript編碼中的字符串了。為了在instrb中把字符串作為一個自變量使用,還需要一個函數,把雙字節字符串轉換成單字節字符串。
  
    為了我寫了兩個函數,getstring() 和 getbytestring(),稍后再對此進行解釋。
  
  結構
  
    分解的數據被存儲在vbscript dictionary 對象中。 dictionary 對象是hash 表對象,它存儲(key, item)對。它是vbscript和asp2.0的一部分。
  
    定義第一個dictionary 對象 " uploadrequest " 。這個對象包含由上載表提交的所有控制。key是控制的名字,item則是對象中所包含的控制的信息:
  "controlname1", dictionary control1
  "controlname2", dictionary control2
  
    代表一個控制的dictionary 對象包含著下面的(key, item) 對:
  "value", string or binary content
  "filename", name of uploaded file
  "contenttype", contenttype of uploaded file
  
    把這些結合起來,就有以下例子:
  
  uploadrequest : "email", uploadcontrol 1 : "value", [email protected]
  "blob" , uploadcontrol 2 : "filename", c:/upload/200902/file.gif "contenttype" :
  image/gif "value" : gif89ai?
  這個對象對于以后存取和使用數據非常有用。
  
  分解
  
    這里是分解、讀和記錄上載控制的代碼。這個過程用"builduploadrequest"程序來完成,這個程序只有一個自變量,就是原始二進制數據requestbin。
  
  sub builduploadrequest(requestbin)
  
    首先要找到分界線,通過分界線可以知道控制循環何時結束。
  
  ’get the boundary posbeg = 1 posend = instrb(posbeg,requestbin,getbytestring(chr(13)))
  bou

|||
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲一区二区三区| 精品日本高清在线播放| 色综合久久88| 久久精品国产一区| 亚洲精品av在线播放| 自拍偷拍亚洲一区| 久久久久久亚洲精品中文字幕| 欧美日韩一区二区三区| 久久久久在线观看| 尤物tv国产一区| 欧美大片在线看免费观看| 91在线免费看网站| 日韩av第一页| 日本欧美爱爱爱| 日韩精品视频中文在线观看| 国产日韩精品一区二区| 欧美在线视频播放| 亚洲国产小视频在线观看| 久久久久久国产精品久久| 日韩在线国产精品| 国产99久久精品一区二区永久免费| 成人性生交大片免费看小说| 九九综合九九综合| 日韩美女在线观看| 欧美激情久久久久久| 国产精品国产自产拍高清av水多| 欧美极品欧美精品欧美视频| 狠狠躁夜夜躁人人爽天天天天97| 国产精品自在线| 日韩av一卡二卡| 亚洲欧美日韩区| 国产精品中文在线| 成人综合网网址| 亚洲黄色免费三级| 亚洲自拍小视频免费观看| 亚洲精品美女视频| 日韩欧美视频一区二区三区| 国产精品高清在线观看| 国产精品99久久久久久白浆小说| 国产91精品高潮白浆喷水| 亚洲第一视频网站| 日韩中文字幕在线视频播放| 亚洲欧洲一区二区三区在线观看| 欧美日韩成人在线观看| 国产成人高潮免费观看精品| 亚洲欧洲国产伦综合| 日韩电视剧免费观看网站| 色www亚洲国产张柏芝| 国产成人aa精品一区在线播放| 日产精品99久久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲第一福利在线观看| 最近2019年好看中文字幕视频| 人人爽久久涩噜噜噜网站| 亚洲国产精品高清久久久| 5566成人精品视频免费| 久热99视频在线观看| 91亚洲国产成人久久精品网站| 日韩视频免费大全中文字幕| 精品亚洲一区二区三区| 欧美在线视频观看免费网站| 91精品国产高清久久久久久| 日韩在线观看网站| 欧美亚洲另类激情另类| 久久香蕉频线观| 精品久久久久久久久久久久| 日本中文字幕成人| 大胆欧美人体视频| 日本久久精品视频| 亚洲人成电影网站色www| 久久影院资源网| 亚洲国产成人精品电影| 97成人精品区在线播放| 久久国产精品久久久| 欧美日本中文字幕| 久久久久久国产精品三级玉女聊斋| 在线观看成人黄色| 91日本在线视频| 国产日韩欧美黄色| 欧美一级免费看| 日韩中文在线观看| 欧美午夜美女看片| 久久久亚洲网站| 91精品国产乱码久久久久久久久| 欧美色道久久88综合亚洲精品| 国产91精品视频在线观看| 亚洲韩国欧洲国产日产av| 亚洲视频自拍偷拍| 一本久久综合亚洲鲁鲁| 欧美亚洲成人免费| 国产亚洲日本欧美韩国| 国产亚洲人成网站在线观看| 亚洲国产精品国自产拍av秋霞| 97人人做人人爱| 成人看片人aa| 欧美精品在线极品| 亚洲第一黄色网| 国产做受高潮69| 亚洲黄一区二区| 欧美色播在线播放| 亚洲国产精品免费| 亚洲永久免费观看| 亚洲午夜激情免费视频| 成人a在线观看| 欧美乱大交做爰xxxⅹ性3| 日本欧美一二三区| 成人a免费视频| 97在线视频免费播放| 欧美激情第一页xxx| www日韩中文字幕在线看| 一本大道亚洲视频| 亚洲欧美精品中文字幕在线| 日本不卡视频在线播放| 麻豆国产va免费精品高清在线| 91久久久久久久久久久| 亚洲 日韩 国产第一| 欧美电影免费观看网站| 懂色av一区二区三区| 久久精品2019中文字幕| 国产成人a亚洲精品| 亚洲网站视频福利| 欧美成人网在线| 久久天天躁狠狠躁夜夜爽蜜月| 91av在线国产| 色悠悠国产精品| 精品无人国产偷自产在线| 韩剧1988在线观看免费完整版| 26uuu另类亚洲欧美日本一| 91久久夜色精品国产网站| 色综合伊人色综合网| 国产精品久久久久久久久男| 国产91ⅴ在线精品免费观看| 91丝袜美腿美女视频网站| 这里精品视频免费| 岛国av一区二区| 国产精品免费观看在线| 懂色aⅴ精品一区二区三区蜜月| 日韩中文字幕在线播放| 日本一本a高清免费不卡| 日本免费在线精品| 国产精品视频yy9099| 456国产精品| 亚洲白虎美女被爆操| 亚洲丁香婷深爱综合| 亚洲淫片在线视频| 97久久久免费福利网址| 日本高清视频精品| 久久久免费高清电视剧观看| 国产精品欧美日韩久久| 色综合久久精品亚洲国产| 久久躁狠狠躁夜夜爽| 日韩精品小视频| 久久久精品久久| 亚洲欧美日韩国产中文专区| 久久久久久久久久婷婷| 欧美肥婆姓交大片| 欧美大肥婆大肥bbbbb| 亚洲欧美激情视频| 日本免费久久高清视频| 欧美尤物巨大精品爽| 国产午夜精品美女视频明星a级| 日韩在线观看免费全集电视剧网站| 777午夜精品福利在线观看| 亚洲天堂av网|