国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

用ASP和VBScript上載文件(二)

2024-05-04 11:06:34
字體:
供稿:網(wǎng)友
上載腳本的使用
  
    下面是開發(fā)的上載腳本的應(yīng)用范例。本文的下載文件提供例子中的文件和代碼。將壓縮文件釋放到一個路徑下,為你的網(wǎng)絡(luò)服務(wù)器配置一個虛擬路徑。可以在瀏覽器中測試和啟動uploadform.html。
  
  調(diào)用腳本
  
    下面是調(diào)用上載builduploadrequest 方法的途徑。首先調(diào)用一個全程dictionary:uploadrequest。然后調(diào)用builuploadrequest方法,然后在自變量中傳送到請求原始二進(jìn)制數(shù)據(jù)。
  
  bytecount = request.totalbytes
  requestbin = request.binaryread(bytecount)
  dim uploadrequest
  set uploadrequest = createobject("scripting.dictionary")
  builduploadrequest requestbin
  
    數(shù)據(jù)被分解并存儲在dictionary對象中,并用item() 方法恢復(fù)。這些item 數(shù)據(jù)可以保存在vbscript 變量中,并且可以在代碼的任何地方使用。數(shù)據(jù)可以作為響應(yīng)傳送回客戶機(jī),或用在asp代碼中,或?qū)戇M(jìn)文件中及放入數(shù)據(jù)庫中。
  
  取回數(shù)據(jù)
  
    uploadrequest 對象的數(shù)據(jù)可用item("key") 函數(shù)進(jìn)行存取。現(xiàn)在來考慮一下這樣的情況:要存取一個 email控制的值。可以這樣做:
  
  email = uploadrequest.item("email").item("value")
  
    因為這是一個文本類控制,內(nèi)容是一個字符串,這個字符串可以同任何其它vbscript 字符串一樣使用。 對于二進(jìn)制數(shù)據(jù),可以用相同方法恢復(fù)內(nèi)容:
  
  picture = uploadrequest.item("blob").item("value")
  
    也可以存取其它信息,如文件名和content-type。他們是文本類控制。
  
  contenttype = uploadrequest.item("blob").item("contenttype")
  filepathname = uploadrequest.item("blob").item("filename")
  
  在 vbscript 代碼中使用數(shù)據(jù)
  
    上載的數(shù)據(jù)可以同其它變量一樣在vbscript 代碼中使用。比如說,它們可以作為響應(yīng)發(fā)送回客戶機(jī)。
  
  your email is : 〈%=email%〉
  file name of you picture is 〈%=filepathname%〉
  file type of your picture is 〈%=contenttype%〉
  
    二進(jìn)制數(shù)據(jù)也可以發(fā)送回客戶機(jī)。必須設(shè)置一個content-type,可以用binarywrite 方法寫二進(jìn)制數(shù)據(jù)。
  
  response.contenttype = contenttype response.binarywrite picture
  
  向文件中寫入上載數(shù)據(jù)
  
    在文件類控制的情況下,目的通常是將二進(jìn)制數(shù)據(jù)存入某個文件或數(shù)據(jù)庫域,而不是將它們傳送回客戶機(jī)。這個目的是上載文件的固有特點。使用filesystem對象將上載文件存入服務(wù)器的文件系統(tǒng)中。
  
    首先創(chuàng)建filesystem對象:
  
  ’create filesytemobject component set scriptobject = server.createobject("scripting.filesystemobject")
  
    用filesystem對象在路徑中創(chuàng)建一個文件。路徑可以是絕對的,直接指向文件系統(tǒng)(如c:/temp)。也可以是相對的,到網(wǎng)絡(luò)服務(wù)器定義的一個虛擬路徑下。用mappath方法和path_info服務(wù)器變量將虛擬路徑影射到絕對路徑。
  
    write方法需要一個雙字節(jié)字符串作為自變量,所以要將單字節(jié)數(shù)列轉(zhuǎn)換成字符串。write方法負(fù)責(zé)轉(zhuǎn)換這個雙字節(jié)字符串,并用ascii 格式寫它。這就建立了一個包含我們原始的單字節(jié)字符串的二進(jìn)制內(nèi)容的文件。我已將這個文件命名為“uploaded+filename”,這只是為了區(qū)別文件,你可以使用任何其它文件名,如:
  
  ’create and write to a file set myfile = scriptobject.createtextfile(server.mappath(request.servervariables _ ("path_info")) & "uploaded" & filename)
  for i = 1 to lenb(value)
  myfile.write chr(ascb(midb(value, i, 1)))
  next
  myfile.close
  
  將上載數(shù)據(jù)存入數(shù)據(jù)庫
  
    數(shù)據(jù)還可以被存入數(shù)據(jù)庫。content-type 也應(yīng)該存入數(shù)據(jù)庫中,以便以后顯示數(shù)據(jù)。首先要建立與數(shù)據(jù)庫的連接,假定已經(jīng)設(shè)置了適當(dāng)?shù)膁sn:
  
  set conn = server.createobject("adodb.connection")
  conn.open "dsn=wroxdns","user","pass"
  然后從連接中創(chuàng)建記錄集:
  
  sql = "select photo, contenttype from mytable"
  set rs = server.createobject("adodb.recordset")
  rs.open sql, conn, 3, 3
  記錄集創(chuàng)建之后,要將二進(jìn)制數(shù)據(jù)放入數(shù)據(jù)庫的blob域中:
  
  picturechunk = picture & chrb(0)
  rs.fields("picture").appendchunk picturechunk
  rs.fields("contenttype") = contenttype
  rs.update
  conn.close
  
    在appendchunk 方法中,我不得不解決一個臭蟲。事實上我注意到,當(dāng)二進(jìn)制數(shù)據(jù)有奇數(shù)字節(jié)時,appendchunk 方法就不傳送最后一個字節(jié)。解決的辦法是增加一個chr(0),以確保傳送了所有的字節(jié)。也許還有其它辦法,如果有的話,請告訴我。
  
    要得到數(shù)據(jù)庫的映象,使用相同的記錄集,并用正確的內(nèi)容類型將它作為響應(yīng)發(fā)送回客戶機(jī)。
  
  response.contenttype = rs.fields("contenttype")
  size = rs.fields("picture").actualsize
  blob = rs.fields("picture").getchunk(size)
  response.binarywrite blob
  
  結(jié)論
  
    本文展現(xiàn)了一個完整的用vbscript 進(jìn)行文件上載的方法。編碼完全是vbscript ,獨立于第三方產(chǎn)品。
  
    首先集中介紹上載的過程(用" multipart/form-data "型內(nèi)容進(jìn)行html傳遞)。然后詳細(xì)介紹上載的 vbscript代碼。開始時對操作字符串和單字節(jié)數(shù)列的vbscript函數(shù)進(jìn)行簡要回顧。然后介紹了腳本的代碼 以及上載數(shù)據(jù)的結(jié)構(gòu)。
  
    最后顯示了這個腳本的多個用途,從使用asp代碼中的上載變量到數(shù)據(jù)庫或文件系統(tǒng)中存儲上載文件。
  
    點擊下面的鏈接,下載<a >本文的例程代碼。

  • 本文來源于網(wǎng)頁設(shè)計愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。
  • 發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 大埔县| 阿尔山市| 民和| 义马市| 大港区| 武定县| 泰顺县| 阳春市| 奈曼旗| 黑河市| 马鞍山市| 留坝县| 宁陕县| 龙里县| 平和县| 舞钢市| 兴国县| 定边县| 大田县| 卢龙县| 中阳县| 翼城县| 泗阳县| 通道| 巨鹿县| 诸暨市| 浮山县| 称多县| 安塞县| 安阳市| 潜山县| 黎川县| 综艺| 望城县| 富裕县| 镇远县| 镶黄旗| 县级市| 滦平县| 鄂伦春自治旗| 沙田区|