标题:[共享]上传文件代码
只看楼主
xiaobai40510
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-9-26
 问题点数:0 回复次数:9 
[共享]上传文件代码
前几天一直在搜寻上传文件的代码,可是都很少遇到合适的,所以改了改,与诸君共享!(其中具体上传的部分代码,我也不是太懂,愿和大家一块儿讨论下)邮箱:[email=xiaobai40510@]xiaobai40510@[/email]

<%                      '注意这里的应用!
Response.Buffer = True
Server.ScriptTimeOut=9999999
On Error Resume Next
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url=http://www.]http://www.[/url]">
<html xmlns="[url=http://www.]http://www.[/url]">
<head>
<meta http-equiv="Content-Type" c />
<meta http-equiv="Content-Language" c />
<meta c name="robots" />
<title>上传文件</title>
<script language="Javascript">               //检查上传的文件是否为空!   
<!--
function ValidInput()        
{
if(document.form1.upfile.value=="")
{
alert("请选择上传文件!")
document.form1.upfile.focus()
return false
}
return true
}
-->
</script>
</head>
<body id="body">
<form name="form1" action='<%= Request.ServerVariables("URL") %>' method='post'  enctype="multipart/form-data">
<%
SavePath="upload/"
ExtName = "jpg,gif,bmp,chm,exe,png,txt,rar,zip,doc,htm,html" '允许扩展名
If Right(SavePath,1)<>"/" Then SavePath=SavePath&"/" '在目录后加(/)
CheckAndCreateFolder(SavePath)
UpLoadAll_a = Request.TotalBytes '取得客户端全部内容
If(UpLoadAll_a>0) Then
Set UploadStream_c = Server.CreateObject("ADODB.Stream")
UploadStream_c.Type = 1         'adtypebinary=1 adtypetext=2
UploadStream_c.Open
UploadStream_c.Write Request.BinaryRead(UpLoadAll_a)
UploadStream_c.Position = 0
FormDataAll_d = UploadStream_c.Read
CrLf_e = chrB(13)&chrB(10)
FormStart_f = InStrB(FormDataAll_d,CrLf_e)
FormEnd_g = InStrB(FormStart_f+1,FormDataAll_d,CrLf_e)
Set FormStream_h = Server.Createobject("ADODB.Stream")
FormStream_h.Type = 1
FormStream_h.Open
UploadStream_c.Position = FormStart_f + 1
UploadStream_c.CopyTo FormStream_h,FormEnd_g-FormStart_f-3
FormStream_h.Position = 0
FormStream_h.Type = 2
FormStream_h.CharSet = "GB2312"
FormStreamText_i = FormStream_h.Readtext
FormStream_h.Close
FileName_j = Mid(FormStreamText_i,InstrRev(FormStreamText_i,"\")+1,FormEnd_g)
If(CheckFileExt(FileName_j,ExtName)) Then
SaveFile = Server.MapPath(SavePath & FileName_j)
If Err Then
  Response.Write "文件上传: <span style=""color:red;"">文件上传出错!</span> <a href=""" & Request.ServerVariables("URL") &""">重新上传文件</a><br />"
  Err.Clear
Else
SaveFile = CheckFileExists(SaveFile)
k=Instrb(FormDataAll_d,CrLf_e&CrLf_e)+4
l=Instrb(k+1,FormDataAll_d,leftB(FormDataAll_d,FormStart_f-1))-k-2
FormStream_h.Type=1
FormStream_h.Open
UploadStream_c.Position=k-1
UploadStream_c.CopyTo FormStream_h,l
FormStream_h.SaveToFile SaveFile,2
SaveFileName = Mid(SaveFile,InstrRev(SaveFile,"\")+1)
uptime=now()
'//写入到数据库
database="data.mdb"
db="provider=microsoft.jet.oledb.4.0; provider="&server.MapPath(database)
set conn=server.CreateObject("adodb.connection")
conn.open db
set rs=server.CreateObject("adodb.recordset")
sql="select * from file"
rs.open sql,conn,1,2
rs.addnew
rs("fileName")=SaveFileName
rs("uptime")=uptime
rs("contentlen")=UpLoadAll_a/1024
rs.update
set rs=nothing
conn.close
set conn=nothing
'传递成功
Response.write "文件上传成功,文件路径:"& SavePath &"" & SaveFileName & "<br><br><a href="""& Request.ServerVariables("URL")&""">继续上传文件</a>    "
End If
Else
Response.write "<script>alert('文件格式不正确,上传失败!');location.replace('upload.asp')</script>"
End If
Else
%>
<table align="center">
<tr>
  <td>文件上传</td>
</tr>
<tr>
  <td>选择文件:</td>
  <td><input name="upfile" type="file"></td>
</tr>
<tr>
  <td>
    <input type="submit" name="Submit" value="上传">
    <input type="reset" name="Submit2" value="重置">
  </td>
</tr>
</table>
<%
End if
Set FormStream_h = Nothing
UploadStream.Close
Set UploadStream = Nothing
%>
</form>
</body>
</html>
<%
'判断文件类型是否合格
Function CheckFileExt(FileName,ExtName) '文件名,允许上传文件类型
FileType = ExtName
FileType = Split(FileType,",")
For i = 0 To Ubound(FileType)
  If LCase(Right(FileName,3)) = LCase(FileType(i)) then       '将扩展名与可以上传的文件的扩展名进行比较
    CheckFileExt = True
    Exit Function
  Else
    CheckFileExt = False
  End if
Next
End Function
'检查上传文件夹是否存在,不存在则创建文件夹
Function CheckAndCreateFolder(FolderName)
dim fldr
fldr = Server.Mappath(FolderName)
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fldr) Then
fso.CreateFolder(fldr)
End If
Set fso = Nothing
End Function
'检查文件是否存在,重命名存在文件
Function CheckFileExists(FileName)
Set fso=Server.CreateObject("Scripting.FileSystemObject")
If fso.FileExists(SaveFile) Then
i=1
flag=True
Do While flag
  CheckFileExists = Replace(SaveFile,Right(SaveFile,4),"_" & i & Right(SaveFile,4))     
             '判断,如果存在相同的文件名的话,将其文件名的最后四位前加_
  If not fso.FileExists(CheckFileExists) Then
    flag=False
  End If
i=i+1
Loop
Else
CheckFileExists = FileName
End If
Set fso=Nothing
End Function
%>
搜索更多相关主题的帖子: 上传文件 邮箱 代码 DTD 
2007-11-30 09:44
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
得分:0 
支持共享

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-30 14:40
xiang588
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-11-29
得分:0 
我也遇到这个问题
但是那个破服务器不支持FSO
怎么办???
谁能解决一下

Coder&Teacher&Dreamer
2007-11-30 14:58
sjzfls
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-5-11
得分:0 
支持,不过想问下,如果想添加上传格式该怎么办呢?
2007-11-30 15:26
xiaobai40510
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-9-26
得分:0 
SavePath="upload/"      指的是上传路径
ExtName = "jpg,gif,bmp,chm,exe,png,txt,rar,zip,doc,htm,html" '  指允许扩展名
如果有需要,改变这两个的值便可以!

具体,高深一点的,我也不是太懂!只是把这段代码调试出来,可以用而已

2007-12-01 09:17
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
原帖由 [bold][underline]xiang588[/underline][/bold] 于 2007-11-30 14:58 发表 [url=http://bbs.][/url]
我也遇到这个问题
但是那个破服务器不支持FSO
怎么办???
谁能解决一下

试试用adodb.stream
2007-12-01 13:12
xiang588
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-11-29
得分:0 
原帖由 [bold][underline]madpbpl[/underline][/bold] 于 2007-12-1 13:12 发表 [url=http://bbs.][/url]

试试用adodb.stream
BTG

谢谢
我试一下
不过我不懂adodb.stream
能否给个源码看看

我还是先google一下看看
呵呵

Coder&Teacher&Dreamer
2007-12-01 14:30
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
原帖由 [bold][underline]xiang588[/underline][/bold] 于 2007-12-1 14:30 发表 [url=http://bbs.][/url]
BTG

谢谢
我试一下
不过我不懂adodb.stream
能否给个源码看看

我还是先google一下看看
呵呵

我只有一个思路,这方面也不是太懂,你可以百度、google一下。
2007-12-01 15:09
池守锬
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-3-22
得分:0 
谢谢啦
2008-01-23 13:27
gdk2006
Rank: 4
等 级:业余侠客
威 望:8
帖 子:928
专家分:270
注 册:2006-7-2
得分:0 
我记得无俱无组件上传可以突破服务器的限制的,可以传比较大的文件,楼主的代码收藏了,回头再看看!

程序员的悲哀如何找女朋友?
追女解决方案百度“让她着迷”!
2008-01-23 13:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-189450-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.501488 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved