?? +
字號:
作者:cooljack
日期:00-5-29 上午 10:19:27
上傳組件(3)
'count屬性用于在ASP中獲取上傳表單的個數
'保存文件
Private Function SaveFile(SPath As String, FileName As String, FileValue() As Byte, lngOverWrite As Integer) As Boolean
Dim RPath As String
Dim fs As Scripting.FileSystemObject
Set fs = New Scripting.FileSystemObject
If Right(SPath, 1) <> "\" Then SPath = SPath & "\"
RPath = SPath & FileName
If fs.FileExists(RPath) And lngOverWrite <> 2 Then
SaveFile = False
Else
Open RPath For Binary As #1
Put #1, , FileValue
Close #1
SaveFile = True
End If
End Function
'把二進制字符串轉換成普通字符串函數
'以下的兩個方法用到了woozhj的處理中文的方法,很不錯,我沒有改動他對此方法的注釋
'我們還可以用strconv方法把數據轉化為Unicode后再來處理中文,更簡單,但是woozhj兄的方法真的不錯,所以就用它了!
Private Function BtoS(binstr As Variant) As String
Dim lnglen As Long
Dim tmpBin As Variant
Dim strC As String
Dim skipflag As Long
Dim i As Long
'中文字符Skip標志
skipflag = 0
strC = ""
If Not IsNull(binstr) Then
lnglen = LenB(binstr)
For i = 1 To lnglen
If skipflag = 0 Then
tmpBin = MidB(binstr, i, 1)
'判斷是否中文的字符
If AscB(tmpBin) > 127 Then
'AscW會把二進制的中文雙字節字符高位和低位反轉,所以要先把中文的高低位反轉
strC = strC & Chr(AscW(MidB(binstr, i + 1, 1) & tmpBin))
skipflag = 1
Else
strC = strC & Chr(AscB(tmpBin))
End If
Else
skipflag = 0
End If
Next
End If
BtoS = strC
End Function
'把普通字符串轉成二進制字符串函數
Private Function StoB(varstr As String) As Variant
Dim str2bin As Variant
Dim varchar As Variant
Dim varasc As Long
Dim varlow, varhigh
Dim i As Long
str2bin = ""
For i = 1 To Len(varstr)
varchar = Mid(varstr, i, 1)
varasc = Asc(varchar)
' asc對中文字符求出來的值可能為負數,
' 加上65536就可求出它的無符號數值
' -1在機器內是用補碼表示的0xffff,
' 其無符號值為65535,65535=-1+65536
' 其他負數依次類推。
If varasc < 0 Then
varasc = varasc + 65535
End If
'對中文的處理:把雙字節低位和高位分開
If varasc > 255 Then
varlow = Left(Hex(Asc(varchar)), 2)
varhigh = Right(Hex(Asc(varchar)), 2)
str2bin = str2bin & ChrB("&H" & varlow) & ChrB("&H" & varhigh)
Else
str2bin = str2bin & ChrB(AscB(varchar))
End If
Next
StoB = str2bin
End Function
AspcnUP 例子
下面是一個upload.htm文件,在這里我們選擇上傳文件。表單中有兩個對象,一個為文件,一個為文本。注意為了表現大小寫的區別上傳文件項的名字用了"FileName"。
<html>
<head>
<meta name="Author" content="Sander Duivestein">
</head>
<body>
<form name="frmUpload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp">
<table>
<tr>
<td>File</td>
<td><input type="file" name="FileName"></td>
</tr>
<tr>
<td>File</td>
<td><input type="text" name="fieldname"></td>
</tr>
<TR>
<td COLSPAN="2" ALIGN="right"><INPUT TYPE="Submit" VALUE="Upload"></TD>
</TR>
</table>
</form>
</body>
</html>
下面是upload.asp的內容,在這里我們來處理上傳文件。
其實如果只是上傳,我們的代碼就只有兩句
Set objUpload=Server.CreateObject("aspcn.upload")
varResult=objUpload.upload
這樣,只要varResult返回的是"OK" ,則文件已經上傳成功,一切都使用了默認值。要詳細的就請看upload.asp的內容吧。
<%@ Language="VBScript" %>
<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
Set objUpload = Server.CreateObject("aspcn.upload")
'設定文件最大長度不超過100K,默認值為100K
objupload.maxsize=1000000
'設定如果目標文件存在,進行覆蓋,默認為1,表示不能覆蓋
objupload.overwrite=2
'設定上傳到服務器的路徑,這里必須為絕對路徑,默認值為c:\
objupload.path="c:\test\"
'調用upload方法將文件保存
varResult = objUpload.Upload
'到此為止,如果varResult返回OK,則文件上載成功
'***********************************************************************
'* 前面的這一些你如果賺煩你還可以這樣 *
'* varResult=objUpload.Upload(100000,"c:\test\",2) *
'* 作用和上面的一樣,三個參數分別表示maxsize,path,overwrite,均可省 *
'* 如省略maxsize,寫法如下: *
'* varResult=objUpload.Upload(,"c:\test",2) *
'* 此時如果先前objupload.maxsize沒有設置,組件將使用默認值 *
'***********************************************************************
If varResult="OK" Then '如果varResult返回OK,則文件上載成功
'下面我們來看看倒底上傳了些什么東東
'取得各項的大小,填寫表單項時,請注意表單項名字的大小寫
filenamesize= objUpload.size("FileName") '取得upload.htm文件中FileName表單項的大小
fieldnamesize= objupload.size("fieldname") '取得upload.htm 文件中fieldanme表單項的大小
totalcount=objupload.Count
fieldvalue=objUpload.Form("fieldname") '取得fieldname表單項的值
filevalue=objUpload.Form("FileName") '取得filename表單項的值,注意名字的大小寫,不能錯
'顯示上傳來的信息
response.write "FieldSize: "&fieldnamesize&"<br>"
response.write "Field's Value:" &fieldvalue&"<br>"
response.write "FileSize: "&filenamesize&"<br>"
'因為文本與二進制不能在一起顯示,所以如果要顯示上傳來的二進制,請先屏蔽掉文本顯示
'然后去掉下面幾句的引號就可以了,當然顯示只能是圖片咯
'response.write "File:"&"<br>"
'response.contenttype="image/jpeg"
'response.binarywrite filevalue
'另外,我們通過本組件將文本和文件數據上傳到數據庫中,下面就演示把文件上載到數據中,需要請去掉引號即可
'SaveTOBase(filevalue)
Else '上傳出錯
response.write varResult '顯示錯誤信息
End If
Set objUpload = Nothing
End If
%>
<% Function SaveToBase(filev)
strIndex="select * from test"
strProvider="DSN=aspcn;UID=sa;PWD="
Set rst=Server.CreateObject("ADODB.RecordSet")
rst.open strIndex,strProvider,2,3
'以上為打開數據,我就不想多說了!
rst.AddNew
rst("id")="aspcn"
rst("varbinary").appendchunk filev
rst.update
'數據就保存到數據庫了
rst.close
Set rst=Nothing
End Function
%>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -