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

首頁 > 編程 > ASP > 正文

ASP實現文件上傳

2024-05-04 11:05:20
字體:
來源:轉載
供稿:網友

我們在做Web項目的時候經常會需要使用上傳文件這一功能,但是在基于瀏覽器/服務器的應用環境中上傳各種類型的文件一直是困擾著用戶們,那么ASP實現文件上傳的方法是什么呢?

一.基于ASP的文件上傳實現原理分析
基本原理是:采用ADO Stream對象的BinaryRead方法將FORM中的所有數據讀出,從中截取出所需的文件數據,以二進制文件方式存盤。
下面是上傳文件頁面的一個例子(upload.htm):

<html><body><form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp"><input type="file" name="FileName"><INPUT TYPE="Submit" VALUE="Upload"></TD></form></body></html>

程序中使用了文件對象,這樣在Upload.asp中采用BinaryRead方法讀來的原始數據就不僅僅是選擇的文件本身的數據,還包含該文件在用戶硬盤上的路徑、類型、提交頁面的表單域名等相關信息的描述,這樣我們就需從中提取出文件的具體內容。根據分析,數據的頭部信息與數據的分界線是兩對回車換行符,尾部也有分隔信息,我們可以采用類似以下的方法獲取文件數據。

Dim FormData.FormSize,DataStart,CLStr,DivStrFormSize=Request.TotalBytesFormData=Request.BinaryRead(FormSize)CLStr=ChrB(13)&ChrB(10)DataStart=InStrB(FormData.CLStr&CLStr)+4'4是兩對回車換行符的長度DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2FormData=MidB(FormData,DataStart,DataSize)FormData就是文件的內容了。

中間根據需要,可進行相應的處理。最后的工作就是將文件保存了。保存的方法可以有兩種:一種是利用VB或VC之類程序中的二進制文件操作方法,在工程中加入適當的類型庫,最終編譯成DLL文件,使用時再將該DLL文件注冊就可以了。文件存貯程序如下:

Public Function SaveFile(Pathname As String) As String     Dim objContext As ObjectContext     Dim objRequest As Request  Set objContext=GetObjectContext()     Set objRequest=objContext("Request")     '以下的一段代碼是進行文件存貯的有關操作  Dim FormData() As Byte,CLStr,DivStr     Dim DataStart As Long,DataSize As Long     DataSize=objRequest.TotalBytes     Redim FormData(DataSize-1)     FormData=objRequest.BinaryRead(DataSize)     CLStr=ChrB(13) & ChrB(10)     DataStart=InStrB(FormData,CLStr & CLStr)+4     DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)     DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2     FormData=MidB(FormData,DataStart,DataSize)     '創建一個二進制文件并將FormData寫入其中     Open Pathname For Binary As 1     Put #1,,FormData     Close #1     SaveFile="OK!"   End Function

第二種方法是利用ADO STREAM中提供的二進制文件操作方法來完成,保存文件的語句是: StreamOBJ.SaveToFile (fileName,2)。在 這種操作中,我們可以將有關的操作存放在一個類文件中,在應用時,直接將該類文件包含在ASP程序中就可以了。具體處理方法,請參閱有關介紹。
二.文件上傳實現方法實例
實現文件上傳可使用組件或無組件方式。對于組件類,比如說microsoft posting acceptor(簡稱mpa),就是微軟公司發布的一個免費服務器組件,這類組件的安裝也比較方便。對于微軟的mpa,運行它的安裝文件就可以了。而一般的dll組件形式的,我們則需要進行注冊。例如,要使用aspcnUP.dll,只要在Window 2000上執行regsvr32 [path/]aspcnUP.dll,系統出現注冊成功的信息提示就可以使用該組件了;對于無組件類,在使用時,只要在處理程序中包含以下的語句就可以了:

<!--#include FILE="upload.inc"-->set upload=new upload_5xSoft '建立上傳對象

有關的屬性與操作方法,請參閱該組件的使用手冊。
下面是以aspcnUP.dll組件為例,上傳部分類型文件的源代碼(upload.asp):

<% @ language="vbscript"  Set fileUP=Server.CreateObject("aspcn.Upload")  fileUP.Maxsize=200000  fileUP.Path="d:/upfile"  fileUP.Upload  For i=0 to fileUP.Count   fieldname=fileUP.FieldName(i)   If fileUP.FileType(fieldname)="zip" Or ileUP.FileType(fieldname)="rar" Then    fileUP.Save fieldname   End If  Next  Set fileUP=Nothing%>

瀏覽器/服務器應用模式還在快速地發展著,在微軟新推出的ASP.NET中,已經內置了文件上傳的功能,使用非常簡單方便。作為一種全新的技術,ASP.NET并不只是ASP的簡單升級,它是一個用于Web開發的全新框架,其中包含了許多新的特性。ASP.NET提供了更易于編寫、結構更清晰的代碼,利用這些代碼我們將會更容易地進行再利用和共享,從而開發出更多更實用的程序來。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持錯新技術頻道!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 历史| 杭州市| 遵义市| 泽普县| 全州县| 古丈县| 长乐市| 佛教| 莆田市| 个旧市| 清水河县| 穆棱市| 房产| 扎囊县| 甘肃省| 子长县| 晴隆县| 江陵县| 河曲县| 中西区| 娄底市| 红桥区| 惠东县| 正宁县| 灵武市| 财经| 宁陵县| 永州市| 泊头市| 深圳市| 郓城县| 得荣县| 鲁甸县| 威远县| 兖州市| 阜平县| 浙江省| 长寿区| 海晏县| 嫩江县| 长春市|