界面不错很好看,进度条的效果实现也很简单一个table的td里面放了一个有背景色的div来实现进度条,控制div的宽度,用百分比控制这个上传过程中最重要的就是在文件还没上传完成时就先获得了文件的总字节数,然后上传的时候请求的页面边上传边先向浏览器echo已经上传完成的字节数(加上前面的总字节数,这样就能算出上传的百分比)我没做过这样的上传程序,就是在边上传边返回已完成的字节数,我觉得单用php的上传功能是不能实现这个效果的。
ftp上传应该是可以达到这样的效果的,没猜错的话应该是用ftp上传的。http上传似乎是没办法在单次请求中返回已上传的字节数的或许有其他办法,大家交流一下,java里好象也能实现这样的功能,谁能介绍一下?
ftp上传应该是可以达到这样的效果的,没猜错的话应该是用ftp上传的。http上传似乎是没办法在单次请求中返回已上传的字节数的或许有其他办法,大家交流一下,java里好象也能实现这样的功能,谁能介绍一下?
所以对这个技术感兴趣的可以去看看perl并且搜索一下相关资料
如果可能的话,你贴出process.pl的代码。看看是否能改写成php的to ezdevelop(phpsalon.com) “新版本的PHP已实现了上载进度条的功能”
此话怎讲?
但perl也只是一种语言,如果知道过程是怎么弄的,我想完全可以换成php的.我看到他process.pl生成的代码如下:他不段的在结尾加上那javascript脚本.<html><head></head>
<script language=javascript>
function update(val, used, remain) {
if ( val == 'done' ) {
me.innerHTML = "上载成功!";
document.all.used.style.width = '100%';
}
else {
me.innerHTML="已上载 " + val + " ( 剩余 " + remain + " )";
document.all.used.style.width = used + "%";
}
}
</script><style type="text/css">body { font-size: 12px; } td { font-size: 12px; }</style>
<body topmargin="5" leftmargin="15">
<div height="20" width="100%">正在上载附件......</div>
<span id="size">文件容量: 5.36MB</span><br>
<span id="me">Loading...</span>
<table cellspacing=0 cellpadding=0 border=0>
<TR><TD WIDTH=3%>0%</TD>
<TD WIDTH=94%>
<table style="BORDER: #104a7b 1px solid; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1px; PADDING-TOP: 1px;" cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr><td width="100%">
<div id="used" style="FONT-SIZE: 5px; WIDTH: 0%; HEIGHT: 5px; BACKGROUND-COLOR: #e00505"></div>
</td></tr>
</table>
</TD>
<TD ALIGN=RIGHT>100%</TD>
</TR>
</table>
<div><img src="/images/timer.gif" border="0" align=absmiddle> 注意:网络速度影响上载快慢,剩余时间浮动属正常现象。</div>
<script>update("96.1KB", '2', '0分钟0秒');</script>
<script>update("144.1KB", '3', '1分钟51秒');</script>
<script>update("200.1KB", '4', '1分钟35秒');</script>
<script>update("232.1KB", '4', '2分钟44秒');</script>
<script>update("280.1KB", '5', '1分钟49秒');</script>
<script>update("336.1KB", '6', '1分钟32秒');</script>
<script>update("376.1KB", '7', '2分钟8秒');</script>
<script>update("408.1KB", '7', '2分钟39秒');</script>
<script>update("440.1KB", '8', '2分钟38秒');</script>
<script>update("488.1KB", '9', '1分钟44秒');</script>
<script>update("544.1KB", '10', '1分钟28秒');</script>
<script>update("592.1KB", '11', '1分钟42秒');</script>
<script>update("648.1KB", '12', '1分钟27秒');</script>
<script>update("696.1KB", '13', '1分钟40秒');</script>
<script>update("752.1KB", '14', '1分钟25秒');</script>
<script>update("808.1KB", '15', '1分钟24秒');</script>
<script>update("864.1KB", '16', '1分钟23秒');</script>
<script>update("920.1KB", '17', '1分钟22秒');</script>
<script>update("976.1KB", '18', '1分钟21秒');</script>
<script>update("1.00MB", '19', '1分钟20秒');</script>
<script>update("1.06MB", '20', '1分钟19秒');</script>
<script>update("1.10MB", '21', '1分钟31秒');</script>
http://www.zend.com/zend/week/pat/pat23.txt
楼主说的那个上穿就是服务器端没有上穿完就不断地发送
类似<script>update("1.10MB", '21', '1分钟31秒');</script>给客户端,
这样Ie就能看到状态条在动并提示。
=================================================================
SERVER PUSH 之我见
---摘自网易
我不知道业内人士是如何理解SERVER PUSH这个概念的。也没有人真正把SERVER
PUSH的概念澄清。据我所了解,SERVER PUSH是一种用CGI来演示动画的一种特殊支持。也就指X-MI
XED-REPLACE。可惜,这个功能只能在NS上实现,IE无法浏览到动画替换,只能堆
在后面。所以说过I E并不支持SERVER PUSH.现在所谓的server push的聊天室,也就指无刷新的聊天室程序。在PERL中其实如
果用content-type:multipart/x-mixed-replace这种头,在IE和NS中就可以
实现程序没有运行完就可以输出结果,实现直接写屏。 其实把文件名改成 nph-
**.cgi 然后设置 $|=1;一样可以实现程序没有运行完就可以输出结果,实现直接
写屏的聊天室程序。但是这样的聊天室消耗资源巨大,每一个用户就是新起一个进程,占用一定的cp
u和内存,如果人多起来是一个恶梦!我想,如果用 ISAPI 或者 FAST-CGI也许能
加快速度。但是最理想的办法就是利用SOCKET来建立一个连接,SERVER不先主动关闭连接。
这样一样可以实现无刷屏的聊天室程序,而且占用资源小。目前的银沙,网易聊
天室都是这种类型的。所以才能有那么高的服务器客容量。如果想写出真正好的聊天室程序,要涉及到很多方面,不单单是浏览器与服务器
的交互,要涉及到网络协议,操作系统,等等的知识。
http://www.atmail.com/不知道是不是 拿别人的东西来卖的
用div来现。客户端每1秒读一次服务端。
服务端也是一个输出javascript的php程序,这个程序最好不要太大。
到javascrpt版,阿信个人网站看下。只要把他的进度改成动态就好了