導航:首頁 > 版本升級 > asp自動保存文件到本地

asp自動保存文件到本地

發布時間:2024-11-02 00:35:04

① 怎樣打開ASP文件

打開ASP文件的方法有多種,其中使用「Macromedia Dreamweaver MX」軟體或「Microsoft FrontPage」軟體是較為常見的方式。如果你的電腦中安裝了Offices辦公軟體,那麼「Microsoft FrontPage」也作為選項之一。

在使用「Macromedia Dreamweaver MX」打開ASP文件時,首先需要在Dreamweaver中新建一個項目。然後在項目中導入你需要編輯的ASP文件。接下來,你可以使用Dreamweaver的編輯工具對ASP文件進行修改,完成後保存文件即可。

使用「Microsoft FrontPage」打開ASP文件的操作步驟更為簡單。首先,打開FrontPage,點擊「文件」菜單,選擇「打開」,在彈出的對話框中選擇需要編輯的ASP文件。之後,FrontPage會自動打開ASP文件,你可以直接在FrontPage中進行編輯,編輯完成後保存文件即可。

如果你的電腦中已經安裝了Offices辦公軟體,那麼「Microsoft FrontPage」就是你打開ASP文件的最佳選擇。只需在FrontPage中打開需要編輯的ASP文件,進行編輯和修改,最後保存文件即可。

總的來說,使用「Macromedia Dreamweaver MX」或「Microsoft FrontPage」打開和編輯ASP文件都較為方便,只需選擇適合你的軟體進行操作即可。

② 怎樣用asp實現圖片上傳到文件夾,路徑保存在access資料庫

代碼如下:
很簡單的,自己修改一下局部就OK了

/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 覆蓋方式,如果有同名則覆蓋原來的文件
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
%>

③ 詳細介紹ASP.NET狀態保存方法

ASP NET狀態保存分為客戶端保存和伺服器端保存兩種

使用客戶端選項存儲頁信息而不使用伺服器資源的這些選項往往具有最低的安全性但具有最快 的伺服器性能 因為對伺服器資源的要求是適度的 但是 由於必須將信息發送到客戶端來進行存儲 因此對於以這種方式可以存儲多少信息存在一定的客觀限制

客戶端保存的方式一般有如下 種

ViewState:

利用場合為 在對同一頁的多個請求間自動保留值 多用於客戶端的一些事件 典型利用場合為 頁面信息重置 登陸出錯次數統計 Grid列排序等

優點 不利用伺服器端資源 實現簡單 相對高的安全性 因為經過哈希計算和壓縮 並且針對 Unicode 實現進行編碼

缺點 因為ViewState存儲在頁面本身 所以無法存儲較大的值 並且通過源文件可以看見其中的值 雖然經過哈希計算和壓縮 但仍有被篡改的風險

可存儲的類型 string integer bool array arr aylist hashtable以及其他可以序列化的類型

HiddenField:

利用場合為 存儲少量頁面 中經常改動的信息 多和客戶端腳本一塊使用 典型利用場合為 客戶端經歷一系列驗證之後向伺服器端回發 伺服器端從客戶端HiddenField中獲取值 進行處理 例如 LeyserHomepage中 要刪除一項產品 需要在客戶端彈出確認Form 用戶確認之後再PostBac k回伺服器端進行資料庫Delete操作 當用戶確認要刪除時 將當前要刪除的產品ID存放到一個HiddenField中 然後執行 Form( ) submit回發到伺服器端 伺服器端再從HiddenField獲取產品ID值 進行資料庫操作

優點 不使用伺服器資源 廣泛支持 實現簡單

缺點 安全性不高 因為它被包含在頁面上進行發送 所以可以通過源文件看見他的內容 存儲結構少 僅僅支持string integer bool array arraylis t等簡單的數據結構 並且在其上只存放簡單的單值 若要存放多值 需要額外編碼 存儲量少 因為它被存儲在頁面本身 所以 無法存儲較大的值 而且大的數據量會受到防火牆和代理的阻止 注意 使用了HiddenField之後 需要回發到伺服器進行 處理 應該使用Http Post方法而不是Http Get方法(通過URL請求訪問)

Cookie:

利用場合為 存儲少量頁面中經常改動的信息 典型利用場合為 為登陸過的網站保存登陸用戶名 為用戶輸入提供方便 還有在一些用戶自定義項目上保存用戶的個性化設置

優點 不使用伺服器資源 實現簡單 可配置到期時間

缺點 大小受到限制 一般瀏覽器支持的最大的Cookie 容量為 位元組 客戶端用戶可能會配置為拒絕Cookie 安全性 保存在客戶端的信息可能會被惡意用戶修改或者獲取 所以不應該保存敏感信息 持久性 保存期限受到客戶端的配置影響

Cookie 通常用於 存取已知用戶自定義內容的個性化情況 在大多數此類情況中 Cookie 是作為 標識 而不是 身份驗證 所以在 Cookie 中只存 儲用戶名 賬戶名或唯一用戶 ID(例如 GUID)並使用它來訪問站點的用戶個性化結構是足夠的了

QueryString:

利用場合為 將信息從一頁傳遞給另一頁的最簡單的方法

優點 不使用伺服器資源 支持廣泛 實現簡單

缺點 安全性 因為直接在URL中暴露給用戶 所以有被篡改的風險 容量有限 一般的瀏覽器都有 個字元的限制 只有在通過其 URL 請求頁時查詢字元串才是可行的選擇 不能從已提交給伺服器的頁讀取 查詢字元串

視圖狀態:需要為將回發到自身的頁存儲少量信息 ViewState 屬性的使用將提供具有基本安全性的功能

隱藏域 需要為將回發到自身或另一頁的頁存儲少量信息 並且不需要較高的安全性 (客戶端事件)只能在提交到伺服器的頁上使用隱藏域

Cookie 需要在客戶端存儲少量信息並且不需要較高的安全性 (個性化)

查詢字元串 可以將少量信息從一頁傳輸到另一頁 並且不需要較高的安全性 (頁面跳轉 )只有在請求同一頁 或通過鏈接請求另一頁時 才能使用查詢字元串

伺服器端保存方式一般有如下 種

存儲頁信息的伺服器端選項往往比客 戶端選項具有更高的安全性 但它們可能使用更多的 Web 伺服器資源 這可能在信息存儲量較大時導致可縮放性問題

Application:

利用場合 所有的請求都會需要的 一些共有資源 由最先的一個請求率先獲取之後 拿出來共享 其他的請求就不用浪費資源進行再次獲取 典型利用場合 一個股市 Web 站點可能在一天中每 分鍾從資料庫獲取大量的金融股票信息(也許是 MB 的數據) 然後將這些信息緩存在應用程序狀態中 這樣所有以後的查找請求都可以在應用程序狀態中訪問這些信息 其結果是極大地提高了每個 請求的性能 因為傳入的請求不需要跨進程 跨計算機或資料庫的往返過程

首次Http Get請求

If Not Me IsPostBack Then

先判斷Application中是否已経有了緩存

If Application Item( Database ) Is Nothing Then

若沒有 從DataCenter中獲取

Dim ds As New DataSet

ds ReadXml(Server MapPath( TestData xml ))

Dim dv As New DataView(ds Tables( ))

拿到之後 緩存到Application 方便別的進程Http Get請求復用

Application Add( DataBase dv)

End If

Dim dv As DataView

dv = Application Item( DataBase )

緩存到Session 方便當前進程的Http Post請求

Session Add( DataBase dv )

End If

優點 易於實現 全局范圍

缺點 持久性 若 保存數據的伺服器端進程被強行關閉 那麼數據就會丟失 所以利用Application一定要有保底的策略 有的話就使用 沒有的話就自己拿 耗用伺服器端的內存

注意 因為Application中的數據被多個進程公用 所以若需要更新其中的值時 需要利用 如下的語句 做到獨占更新

Application Lock()

Application Item( DataBase ) = NewDataBase

Application UnLock()

Session:

利用場合 單獨的一個進程內部使用 存儲單獨會話的短期的 敏感的數據

優點 易於實現 持久性 可以應對IIS重啟和輔助進程重啟 可在多進程中使用

缺點 耗用伺服器端的內存

Database:

優點 安全性 容量 持久性 可靠性和數據完整性 可訪問性 廣泛支持

缺點 復雜 性能

方法 使用場合

應用程序狀態 存 儲更改不頻繁的全局信息 這些信息由多個用戶使用 此時安全性不成為問題 不要在應用程序狀態中存儲大量的信息

會話狀態 存儲特定於單獨會話的短期信息 並且需要較高的安全性 不要在會話狀態中存儲 大量的信息 在支持許多用戶的應用程序中 這可能會佔用大量伺服器資源並影響可縮放性

lishixin/Article/program/net/201311/13257

④ asp文件上傳的問題!!急!!!

找一個無組件上傳類.比如無懼上傳類

<%
'----------------------------------------------------------------------
'轉發時請保留此聲明信息,這段聲明不並會影響你的速度!
'******************* 無懼上傳類 V2.2 ************************************
'作者:梁無懼
'網站:http://www.25cn.com
'電子郵件:[email protected]
'版權聲明:版權所有,源代碼公開,各種用途均可免費使用,但是修改後必須把修改後的文件
'發送一份給作者.並且保留作者此版權信息
'**********************************************************************
'----------------------------------------------------------------------
'----------------------------------------------------------------------
'文件上傳類
Class UpFile_Class

Dim Form,File
Dim AllowExt_ '允許上傳類型(白名單)
Dim NoAllowExt_ '不允許上傳類型(黑名單)
Dim IsDebug_ '是否顯示出錯信息
Private oUpFileStream '上傳的數據流
Private isErr_ '錯誤的代碼,0或true表示無錯
Private ErrMessage_ '錯誤的字元串信息
Private isGetData_ '指示是否已執行過GETDATA過程

'------------------------------------------------------------------
'類的屬性
Public Property Get Version
Version="無懼上傳類 Version V2.0"
End Property

Public Property Get isErr '錯誤的代碼,0或true表示無錯
isErr=isErr_
End Property

Public Property Get ErrMessage '錯誤的字元串信息
ErrMessage=ErrMessage_
End Property

Public Property Get AllowExt '允許上傳類型(白名單)
AllowExt=AllowExt_
End Property

Public Property Let AllowExt(Value) '允許上傳類型(白名單)
AllowExt_=LCase(Value)
End Property

Public Property Get NoAllowExt '不允許上傳類型(黑名單)
NoAllowExt=NoAllowExt_
End Property

Public Property Let NoAllowExt(Value) '不允許上傳類型(黑名單)
NoAllowExt_=LCase(Value)
End Property

Public Property Let IsDebug(Value) '是否設置為調試模式
IsDebug_=Value
End Property

'----------------------------------------------------------------
'類實現代碼

'初始化類
Private Sub Class_Initialize
isErr_ = 0
NoAllowExt="" '黑名單,可以在這里預設不可上傳的文件類型,以文件的後綴名來判斷,不分大小寫,每個每綴名用;號分開,如果黑名單為空,則判斷白名單
NoAllowExt=LCase(NoAllowExt)
AllowExt="" '白名單,可以在這里預設可上傳的文件類型,以文件的後綴名來判斷,不分大小寫,每個後綴名用;號分開
AllowExt=LCase(AllowExt)
isGetData_=false
End Sub

'類結束
Private Sub Class_Terminate
on error Resume Next
'清除變數及對像
Form.RemoveAll
Set Form = Nothing
File.RemoveAll
Set File = Nothing
oUpFileStream.Close
Set oUpFileStream = Nothing
if Err.number<>0 then OutErr("清除類時發生錯誤!")
End Sub

'分析上傳的數據
Public Sub GetData (MaxSize)
'定義變數
on error Resume Next
if isGetData_=false then
Dim RequestBinDate,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
Dim sFormValue,sFileName
Dim iFindStart,iFindEnd
Dim iFormStart,iFormEnd,sFormName
'代碼開始
If Request.TotalBytes < 1 Then '如果沒有數據上傳
isErr_ = 1
ErrMessage_="沒有數據上傳,這是因為直接提交網址所產生的錯誤!"
OutErr("沒有數據上傳,這是因為直接提交網址所產生的錯誤!!")
Exit Sub
End If
If MaxSize > 0 Then '如果限制大小
If Request.TotalBytes > MaxSize Then
isErr_ = 2 '如果上傳的數據超出限制大小
ErrMessage_="上傳的數據超出限制大小!"
OutErr("上傳的數據超出限制大小!")
Exit Sub
End If
End If
Set Form = Server.CreateObject ("Scripting.Dictionary")
Form.CompareMode = 1
Set File = Server.CreateObject ("Scripting.Dictionary")
File.CompareMode = 1
Set tStream = Server.CreateObject ("ADODB.Stream")
Set oUpFileStream = Server.CreateObject ("ADODB.Stream")
if Err.number<>0 then OutErr("創建流對象(ADODB.STREAM)時出錯,可能系統不支持或沒有開通該組件")
oUpFileStream.Type = 1
oUpFileStream.Mode = 3
oUpFileStream.Open
oUpFileStream.Write Request.BinaryRead (Request.TotalBytes)
oUpFileStream.Position = 0
RequestBinDate = oUpFileStream.Read
iFormEnd = oUpFileStream.Size
bCrLf = ChrB (13) & ChrB (10)
'取得每個項目之間的分隔符
sSpace = MidB (RequestBinDate,1, InStrB (1,RequestBinDate,bCrLf)-1)
iStart = LenB(sSpace)
iFormStart = iStart+2
'分解項目
Do
iInfoEnd = InStrB (iFormStart,RequestBinDate,bCrLf & bCrLf)+3
tStream.Type = 1
tStream.Mode = 3
tStream.Open
oUpFileStream.Position = iFormStart
oUpFileStream.CopyTo tStream,iInfoEnd-iFormStart
tStream.Position = 0
tStream.Type = 2
tStream.CharSet = "gb2312"
sInfo = tStream.ReadText
'取得表單項目名稱
iFormStart = InStrB (iInfoEnd,RequestBinDate,sSpace)-1
iFindStart = InStr (22,sInfo,"name=""",1)+6
iFindEnd = InStr (iFindStart,sInfo,"""",1)
sFormName = Mid(sinfo,iFindStart,iFindEnd-iFindStart)
'如果是文件
If InStr (45,sInfo,"filename=""",1) > 0 Then
Set oFileInfo = new FileInfo_Class
'取得文件屬性
iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10
iFindEnd = InStr (iFindStart,sInfo,""""&vbCrLf,1)
sFileName = Trim(Mid(sinfo,iFindStart,iFindEnd-iFindStart))
oFileInfo.FileName = GetFileName(sFileName)
oFileInfo.FilePath = GetFilePath(sFileName)
oFileInfo.FileExt = GetFileExt(sFileName)
iFindStart = InStr (iFindEnd,sInfo,"Content-Type: ",1)+14
iFindEnd = InStr (iFindStart,sInfo,vbCr)
oFileInfo.FileMIME = Mid(sinfo,iFindStart,iFindEnd-iFindStart)
oFileInfo.FileStart = iInfoEnd
oFileInfo.FileSize = iFormStart -iInfoEnd -2
oFileInfo.FormName = sFormName
file.add sFormName,oFileInfo
else
'如果是表單項目
tStream.Close
tStream.Type = 1
tStream.Mode = 3
tStream.Open
oUpFileStream.Position = iInfoEnd
oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2
tStream.Position = 0
tStream.Type = 2
tStream.CharSet = "gb2312"
sFormValue = tStream.ReadText
If Form.Exists (sFormName) Then
Form (sFormName) = Form (sFormName) & ", " & sFormValue
else
Form.Add sFormName,sFormValue
End If
End If
tStream.Close
iFormStart = iFormStart+iStart+2
'如果到文件尾了就退出
Loop Until (iFormStart+2) >= iFormEnd
if Err.number<>0 then OutErr("分解上傳數據時發生錯誤,可能客戶端的上傳數據不正確或不符合上傳數據規則")
RequestBinDate = ""
Set tStream = Nothing
isGetData_=true
end if
End Sub

'保存到文件,自動覆蓋已存在的同名文件
Public Function SaveToFile(Item,Path)
SaveToFile=SaveToFileEx(Item,Path,True)
End Function

'保存到文件,自動設置文件名
Public Function AutoSave(Item,Path)
AutoSave=SaveToFileEx(Item,Path,false)
End Function

'保存到文件,OVER為真時,自動覆蓋已存在的同名文件,否則自動把文件改名保存
Private Function SaveToFileEx(Item,Path,Over)
On Error Resume Next
Dim FileExt
if file.Exists(Item) then
Dim oFileStream
Dim tmpPath
isErr_=0
Set oFileStream = CreateObject ("ADODB.Stream")
oFileStream.Type = 1
oFileStream.Mode = 3
oFileStream.Open
oUpFileStream.Position = File(Item).FileStart
oUpFileStream.CopyTo oFileStream,File(Item).FileSize
tmpPath=Split(Path,".")(0)
FileExt=GetFileExt(Path)
if Over then
if isAllowExt(FileExt) then
oFileStream.SaveToFile tmpPath & "." & FileExt,2
if Err.number<>0 then OutErr("保存文件時出錯,請檢查路徑,是否存在該上傳目錄!該文件保存路徑為" & tmpPath & "." & FileExt)
Else
isErr_=3
ErrMessage_="該後綴名的文件不允許上傳!"
OutErr("該後綴名的文件不允許上傳")
End if
Else
Path=GetFilePath(Path)
dim fori
fori=1
if isAllowExt(File(Item).FileExt) then
do
fori=fori+1
Err.Clear()
tmpPath=Path&GetNewFileName()&"."&File(Item).FileExt
oFileStream.SaveToFile tmpPath
loop Until ((Err.number=0) or (fori>50))
if Err.number<>0 then OutErr("自動保存文件出錯,已經測試50次不同的文件名來保存,請檢查目錄是否存在!該文件最後一次保存時全路徑為"&Path&GetNewFileName()&"."&File(Item).FileExt)
Else
isErr_=3
ErrMessage_="該後綴名的文件不允許上傳!"
OutErr("該後綴名的文件不允許上傳")
End if
End if
oFileStream.Close
Set oFileStream = Nothing
else
ErrMessage_="不存在該對象(如該文件沒有上傳,文件為空)!"
OutErr("不存在該對象(如該文件沒有上傳,文件為空)")
end if
if isErr_=3 then SaveToFileEx="" else SaveToFileEx=GetFileName(tmpPath)
End Function

'取得文件數據
Public Function FileData(Item)
isErr_=0
if file.Exists(Item) then
if isAllowExt(File(Item).FileExt) then
oUpFileStream.Position = File(Item).FileStart
FileData = oUpFileStream.Read (File(Item).FileSize)
Else
isErr_=3
ErrMessage_="該後綴名的文件不允許上傳"
OutErr("該後綴名的文件不允許上傳")
FileData=""
End if
else
ErrMessage_="不存在該對象(如該文件沒有上傳,文件為空)!"
OutErr("不存在該對象(如該文件沒有上傳,文件為空)")
end if
End Function

'取得文件路徑
Public function GetFilePath(FullPath)
If FullPath <> "" Then
GetFilePath = Left(FullPath,InStrRev(FullPath, "\"))
Else
GetFilePath = ""
End If
End function

'取得文件名
Public Function GetFileName(FullPath)
If FullPath <> "" Then
GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)
Else
GetFileName = ""
End If
End function

'取得文件的後綴名
Public Function GetFileExt(FullPath)
If FullPath <> "" Then
GetFileExt = LCase(Mid(FullPath,InStrRev(FullPath, ".")+1))
Else
GetFileExt = ""
End If
End function

'取得一個不重復的序號
Public Function GetNewFileName()
dim ranNum
dim dtNow
dtNow=Now()
randomize
ranNum=int(90000*rnd)+10000
'以下這段由webboy提供
GetNewFileName=year(dtNow) & right("0" & month(dtNow),2) & right("0" & day(dtNow),2) & right("0" & hour(dtNow),2) & right("0" & minute(dtNow),2) & right("0" & second(dtNow),2) & ranNum
End Function

Public Function isAllowExt(Ext)
if NoAllowExt="" then
isAllowExt=cbool(InStr(1,";"&AllowExt&";",LCase(";"&Ext&";")))
else
isAllowExt=not CBool(InStr(1,";"&NoAllowExt&";",LCase(";"&Ext&";")))
end if
End Function
End Class

Public Sub OutErr(ErrMsg)
if IsDebug_=true then
Response.Write ErrMsg
Response.End
End if
End Sub

'----------------------------------------------------------------------------------------------------
'文件屬性類
Class FileInfo_Class
Dim FormName,FileName,FilePath,FileSize,FileMIME,FileStart,FileExt
End Class

%>
------------------------以下是類的使用說明
無懼上傳類 - UpFile_Class V2.1 使用手冊

作者:梁無懼 http://www.25cn.com [下載]

UpFile_Class 概述
自從用ASP來編寫網站,就無時無刻想找一種兼容性強,使用方便的上傳方法,用過很多的無 組件上傳方法,但是都存在使用不方便,兼容性差,速度慢等的問題。終於在2003年的元旦里,想 到了可以讓上傳文件達到最快的方法,經過10天的努力,整整10個版本的版本的更新,終於完成了第一個「無懼上傳類V1.0」,這個版本與其它的上傳類或方法相比,具有速度快,兼容性強, 使用方便等特點。
經過整整一年,在得到各大網友的支持下,並且在長期使用中針對該版的不足,開發了1.1,1.2等版本,由於為了向下兼容,放棄了很多新的特性,現在,結過審慎考慮,終於在2004年7月10日完成了"無懼上傳類2.0"版,該版相對於前作在安全上作出了最大的改進,在類內部實現了上傳類型的黑白名單,更多方便了各種上傳的環境,即使黑客突破了上傳程序,但是最終在保存文件時會使他的所有努力付之流水,該版在使用上比前作更加方便,更人性化了。由於添加和修改了不少屬性值,在移植上需要作出比較大的修改。

UpFile_Class 公共屬性
File 文件域的集合,是一個Dictionary 對象,返回值一個FileInfo_Class 類。可讀寫。
Form 表單域的集合,是一個Dictionary 對象,返回對應表單域的值。可讀寫。
isErr 返回錯誤的數值。-1表示無錯,1表示沒有上傳數據,2表示上傳超出限制。只讀。
Version 獲取類的版本信息。只讀。
AllowExt 白名單,允許上傳的文件類型,可以在類文件里預設可上傳的文件類型,以文件的後綴名來判斷,不區分大小寫,每個後綴名用「;」號分開。如AllowExt="jpg;rar;zip"。可讀寫。
NoAllowExt 黑名單,不允許上傳的文件類型,可以在類文件里預設不可上傳的文件類型,以文件的後綴名來判斷,不區分大小寫,每個後綴名用「;」號分開。如NoAllowExt="asp;htm;html;js;"。可讀寫
ErrMessage 錯誤信息,在發生錯誤時,可以調用ErrMessage顯示錯誤的字元串信息。只讀。

UpFile_Class 公共方法
GetData(MaxSize As Int64) 分析上傳的數據。MaxSize為限制上傳的位元組,設為-1即不限制大小,此為過程,沒有返回值,調用後調檢查isErr是否大於0。
SaveToFile(Item As String,Path As String) 保存到文件,自動覆蓋已存在的同名文件,Item為表單項名,Path為保存的絕對路徑,返回值為保存的文件名。
AutoSave(Item As String,Path As String) 保存到文件,自動創建文件名以避免重復,Item為表單的名,Path為保存的絕對路徑(可不包含文件名,如e:\wwwroot\upimg\),返回值為保存的文件名。
FileData(Item As String) 取得文件數據,Item為表單項名
GetFilePath(FullPath As String) 返迴文件在路徑,如GetFilePath("c:\a.asp") 返回值為"c:\"。
GetFileName(FullPath As String) 返迴文件名,如GetFileName("c:\a.asp") 返回值為"a.asp"。
GetFileExt(FullPath As String) 返迴文件的後綴名,如GetFileExt("c:\a.asp") 返回值為"asp"。
GetNewFileName() 返回一個以時間種子的不重復數值,可以用作文件名。
isAllowExt(Ext As String) 返回一個真假值指是Ext是否為可上傳的類型,如isAllowExt("jpg")。

UpFile_Class 受保護方法
SaveToFileEx(Item As String,Path As String,Over As bool) 保存到文件,其中Over指示如果文件存在是否覆蓋,如果OVER為真時,文件按PATH來保存,如果OVER為假,則自動調用 GetNewFileName() 生成一個新的不重復的文件名,以上傳時的後綴名保存。

FileInfo_Class 概述
文件信息類,用來存貯上傳的文件信息

FileInfo_Class 公共屬性
FileName 返回上傳的文件名。
FilePath 返回上傳時文件在客戶端的路徑。
FileExt 返迴文件擴展名。
FileMIME 返迴文件MIME類別。
FileSize 返迴文件大小(以位元組為單位)。

Dictionary 對象 請參考VBSCRIPT幫助取得更詳細的屬性和方法

UPFILE_CLASS 特性
版本更新
0.96 第一個公開版本,以新的解析方法達到速度上的一個提升,修改稻香老農的無組件上傳類,以達到完全兼容。

1.0 發現原版中一個無法避免的BUG,會導至黑客利用伺服器在上傳其間會佔用100%CPU資源來達到拒絕服務攻擊,故修改了原來的設用方法,增加一個GetData來在實際上傳數據前對上傳文件的大小進行判斷,防止被上傳超大文件。至於其它的改變,忘掉了。
1.2 修改了1.0中的一些錯誤命名(俺的英語不好),整理部分代碼和加入更多對代碼的注釋。
2.0 更加穩定和更安全,加入了上傳類型的黑白名單,自動保存,修改了文件類中的一個屬性,原為FileType現在改為FileMIME,增加了幾個常用的方法。

使用中的一些問題解答

1、什麼時候用AutoSave和SaveToFile?
AutoSave是自動生成新的文件名以避免與伺服器上的原文件同名,而SaveToFile則是覆蓋存在的文件,所以,如果你上傳的文件需要覆蓋原文件的時候,那麼就調用SaveToFile,如果你上傳的文件不需要覆蓋存在的文件,那麼就調用AutoSave,該函數會返回所保存的文件名。

2、為什麼不提供自全部保存?
我不太相信大家用上傳類時不需要對文件進行處理,那麼提供全部保存與分別保存並沒有什麼太大的區別,在能少不多的情況下,我沒有加入這個功能。

3、為什麼我保存的時候會提示「該類型不允許上傳呢」?我沒有執行判斷啊!
這是因為程序內部進行了判斷,為了防止由於外部調用代碼的BUG而導至判斷上傳類型失效,在內部的保存和取得數據都自動進行了文件類型的判別,如果黑名單存在,則白名單不起作用,這是為了方便一些程序的使用,因為有些時間只需要禁止幾個上傳類型即可,而不需要對每個上傳類型進行判別。

關於網友的一些問題

1、為什麼上傳的時候會出現無效頁?
這是因為IE的BUG所導至的,目前尚沒有更好的解決方法,原理是:當客戶端提交表單時,IE會首先發把上傳的總大小傳到伺服器,而這時伺服器開始執行ASP代碼,當運行到GetData方法時,會首先判斷上傳的總大小是為超過程序預設大小,如果沒有,則開始執行上傳,這時IE才真正開始上傳數據,但是如果上傳的總大小為超過程序預設大小,那麼程序自動放棄讀取並退出執行,這時上傳並沒有真正開始,雖然伺服器返回了錯誤信息給IE,但是IE由於設計當初沒有考慮到伺服器會拒絕表單的上傳,故IE會繼續等待伺服器的上傳回應,由於伺服器已經終止上傳,IE就會以為伺服器沒有響應而出現無效頁的錯誤了。

2、為什麼從1.2馬上升到了2.0?好像代碼改得不多啊!
這是因為大家都喜歡高版本,我巴不得改為7.0呢,那樣大家都會覺得這個版真高級。。。。-_-||

使 用 示 例
上傳文件的表單要加入enctype="multipart/form-data"屬性,即
<form name="form1" method="post" action="" enctype="multipart/form-data">
<input type="text" value="1" name="name">
<input type=file name="img">
<input type=submit name="submit" value="提交">
</form>

在執行上傳的ASP頁
'包含類文件
<!-- #include file="upfile_class.asp" -->
dim upfile
dim SaveFilename
'建立上傳對象
set upfile=new upfile_class
'取得上傳數據,限制最大上傳10M 計算方法為 10240000/1000000=10.24M
upfile.GetData (10240000)
'判決是否出錯
if upfile.isErr then
select case upfile.err
case 1
Response.Write "你沒有上傳數據呀???是不是搞錯了??"
case 2
Response.Write "你上傳的文件超出我們的限制,最大10M"
end select
else
'執行保存文件代碼
upfile.SaveToFile "img","c:\"&upfile.file("img").filename
'執行自動保存文件代碼,SaveFilename為保存的文件名
SaveFilename=upfile.AutoSave("img","c:\")
'銷毀對像
set upfile=nothing
end if

⑤ 請問ASP.NET WebForm如何實現定時自動提交表單並保存到資料庫,然後刷新頁面並載入數據

1、建立一個一般處理程序(.ashx後綴),這程序裡面寫獲取From表單的數據和提交的資料庫
中的方法和一個獲取最新插入數據的方法
2、使用HTML的定時觸發,如:setTimeout
3、在定時觸發的方法裡面寫一個Ajax來調用一般處理程序即可(這里可以用Ajax的from表單
提交)
$.ajax({
cache:true,
type:"POST",
url:ajaxCallUrl,//你的一般處理程序路徑
data:$('#yourformid').serialize(),//你的formid
async:false,
error:function(request){
alert("Connectionerror");
},
success:function(data){
//回調獲取插入數據的方法
}
});

閱讀全文

與asp自動保存文件到本地相關的資料

熱點內容
js去特殊字元串 瀏覽:364
微信群每天加好友上限 瀏覽:781
木料雕刻機用什麼編程 瀏覽:764
批量修改文件名批處理 瀏覽:121
天翼雲蘋果手機微信文件 瀏覽:671
初級電工視頻教程下載 瀏覽:291
福州銳捷網路測試崗位累嗎 瀏覽:20
cad二次開發文件怎麼設置 瀏覽:802
台式電腦怎麼分享網路給手機 瀏覽:504
淘寶店鋪模板htlm代碼源文件貼吧 瀏覽:49
jsx文件用什麼打開 瀏覽:371
首選網路類型沒有通用 瀏覽:11
安卓手機app軟體如何備份 瀏覽:713
oppo相冊文件夾名稱 瀏覽:916
win10kms病毒 瀏覽:750
星巴克app余額哪裡查詢 瀏覽:255
asp自動保存文件到本地 瀏覽:895
電腦文件一直顯示被佔用無法發送 瀏覽:746
建行app歷史消費 瀏覽:112
華為p7升級好不好 瀏覽:708

友情鏈接