⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 上传组件(3)-文章来自httpwww.aspcn.com asp中华网.txt

📁 C&C++论坛精华
💻 TXT
字号:
作者: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 + -