如何做一个象xupload这样的上传的东西,http://www.aspupload.com/xupload.html (200分)

  • 主题发起人 主题发起人 mantousoft
  • 开始时间 开始时间
M

mantousoft

Unregistered / Unconfirmed
GUEST, unregistred user!
asp或者asp.net或者delphi如何做一个上传的东西,关键是不要一上传就占用100%cpu,如何实现上传的过程显示在网页显示进度?如果用ie插件怎么做?是否能够实现?

我现在用的delphi写的一个上传组建在上传,效果很差,和asp的那种无组件上传差不多,太占资源,而且太大就传不上去,我的想法能否做一个象语音聊天室那样的插件来上传,上传的时候可以显示进度,可以按一定速度慢慢上传大文件。

希望有经验的朋友能够给点资料或者提示,我现在的网站提供上传给大家用,不过大家一上传我的服务器cpu就100%,页面打开很慢,想解决一下这个问题。

我现在的上传大家可以到my.2ccc.com看到。
 
这个应该要用到多线程,参考一下这方面的资料吧
 
给你一个参考,我以前用过,可以上传!




'Yanhang.00上传程序V1.0
'1.0版本的程序是从以前的程序修改过来的,但是可能还是仍有不足,如果你发现任何错误,请写信通知我,谢谢!
'请在使用前先修改下面的信息
'目前本程序我认为最大的不足就是只能用系统时间定义文件名,不能使用源文件名,这一点我会在以后的版本中改进。
'Enjoy yourself!


'程序制作:yanhang
'email:yanhang@msn.com
'技术支持:http://yanhang00.yeah.net
'本程序要运行在ado 2.5以上版本环境下


'#####################请修改以下信息#####################################
dim siteurl,picsavefolder,limitbyte,lsfilename
siteurl = "http://www.yours.com" '网站地址(末尾不要有"/"符号)
picsavefolder = "uploadfile/" '图片保存文件夹(以"/"符号结尾)
limitbyte = 300 '文件大小限制,单位:k
'######################################################################


'#####################以下信息请不要修改#################################

if request.totalbytes < 192 then
%>
<html>
<head>
<title>文件上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<BODY>
<FORM name="form2" METHOD=POST ACTION="upload.asp" enctype="multipart/form-data">
请选择文件:
<INPUT TYPE="file" NAME="file">
<INPUT TYPE="submit" value="上传">     大小限制:<%=limitbyte%>k
</FORM>
</BODY>
</html>
<%
else
dim contentlen
'接收表单信息
contentlen=request.totalbytes

'检测文件大小
if contentlen>limitbyte*1024 then
response.write "文件超过"&limitbyte&"k,不允许上传!"
else

dim content
'读取上传文件信息
content=request.binaryread(request.totalbytes)

'二进制相互转换函数
Function getByteString(StringStr)
For i=1 to Len(StringStr)
char=Mid(StringStr,i,1)
getByteString=getByteString&chrB(AscB(char))
Next
End Function
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function

'处理数据
dim upbeg,upend,lineone,linetwo,linethree,line1,line2,line3
upbeg=1
upend=instrb(upbeg,content,getbytestring(chr(10)))
lineone=midb(content,upbeg,upend-upbeg)
upbeg=upend+1
line1=lenb(lineone)
upend=instrb(upbeg,content,getbytestring(chr(10)))
linetwo=midb(content,upbeg,upend-upbeg)
upbeg=upend+1
line2=lenb(linetwo)
upend=instrb(upbeg,content,getbytestring(chr(13)))
linethree=midb(content,upbeg,upend-upbeg)
line3=lenb(linethree)

'获得文件名
dim pp,checknametemp,checklen,checkname,filename
pp=instrb(1,linetwo,getbytestring(chr(46)))
checknametemp=rightb(linetwo,line2-pp+1)
checklen=instrb(1,checknametemp,getbytestring(chr(34)))
checkname=getstring(leftb(checknametemp,checklen-1))

'检测文件后缀
if checkname<>"Content-Disposition: form-data; name=" then
if checkname=".txt" or checkname=".doc" or checkname=".gif" or checkname=".jpg" or checkname=".jpeg" or checkname=".zip" or checkname=".rar" or checkname=".bmp" or checkname=".png" or checkname=".tiff" then

'定义文件名
filename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&checkname

'上传文件
dim alllen,upstream,upstreamend,file
alllen=line1+line2+line3+6
set upstream=server.createobject("adodb.stream")
set upstreamend=server.createobject("adodb.stream")
upstream.type=1
upstreamend.type=1
upstream.open
upstreamend.open
upstream.write content
upstream.position=alllen
file=upstream.read(clng(contentlen-alllen-line1-5))
upstreamend.write file
upstreamend.savetofile(server.mappath(picsavefolder&filename))
upstream.close
upstreamend.close
set upstream=nothing
set upstreamend=nothing

response.write "文件上传成功!<br>文件名:"&siteurl&"/"&picsavefolder&filename

else
response.write "不允许上传"&checkname&"格式文件"
end if

else
response.write "您没有填写文件名"
end if

end if
end if
%>
 
文件上传的代码到处都是,但是不是我要求的,我想做一个有进度显示的上传,并且可以传大文件且不至于100%cpu占用。
 
我已经搞顶了,能不能收回分啊,200啊。
 
能不能让我看看你的源码,谢谢!我的邮址:kl78pgy@sohu.com
 
我用Delphi ISAPI DLL 写了一个上传对象,
上传时占用CPU极少,可以上传 几百M大的 的文件,
上传小文件时可以选择不生成临时文件,
原来考虑支持上传进度的显示,
但是暂时没有实现(还有些细节问题)
 
lich:是否商业性的?
 
不是商业的,是因为我看到了某些无组件上传的源码,
发现其,占用CPU内存都非常厉害(某个老农的组件,
本地Web上传5M的东西,占用CPU100%几十秒,占用内存15M,
而我的这个东西,占用CPU不超过10%,占用内存只有几K)
只是写来玩玩

我已经将其改成了组件,
只需几行代码就可以写出一个能支持上传的ISAPI DLL
 
to lich:能否发一份给我研究一下,收到后发分。
 
怎么发给你啊,给个地址吧,
或者发邮件到 mastercn@163.com 注明要Web上传ISAPI源代码
 
邮件已经发出,我的email:root@2ccc.com,谢谢!
 
接受答案了.
 
后退
顶部