Jos*_*ren 79 php upload progress-bar
有谁知道如何在PHP中上传进度条?我正在尝试为相册上传器编写代码.我希望在上传照片时显示进度条.
我是一个相当新的PHP所以我不知道它的一切.
Jes*_*sse 70
到目前为止(谷歌搜索和尝试脚本的时间)最简单的设置和最好的上传我发现
https://github.com/FineUploader/fine-uploader
它不需要APC或任何其他外部PHP库,我可以在共享主机上获得文件进度反馈,并声称支持html5拖放(个人未经测试)和多个文件上传.
Mac*_*cha 13
我很遗憾地说,据我所知,纯PHP上传进度条,甚至是PHP/Javascript上传进度条都是不可能的,因为PHP的工作原理.您最好的选择是使用某种形式的Flash上传器.
AFAIK这是因为在填充所有超全局之前不会执行您的脚本,其中包括$ _FILES.当您的PHP脚本被调用时,该文件已完全上传.
编辑:这不再是真的.那是在2010年.
小智 8
一个PHP-ish(5.2 +)&no-Flash方式对我很有用:
首先,请看这篇文章解释如何启动并运行"uploadprogress"扩展.
然后,在包含要从中上载文件的表单的页面中,创建以下iframe:
<iframe id="progress_iframe" src="" style="display:none;" scrolling="no" frameborder="0"></iframe>
Run Code Online (Sandbox Code Playgroud)
接下来,将此代码添加到"提交"按钮:
onclick="function set() { f=document.getElementById('progress_iframe'); f.style.display='block'; f.src='uploadprogress.php?id=<?=$upload_id?>';} setTimeout(set);"
Run Code Online (Sandbox Code Playgroud)
现在,当您单击"提交"以开始上载文件时,表单中的隐藏iframe将显示并显示uploadprogress.php的内容.$ upload_id必须与您在表单中使用隐藏字段"UPLOAD_IDENTIFIER"的值相同.
uploadprogress.php本身看起来像这样(修复并根据您的需要调整):
<html>
<head>
<META HTTP-EQUIV='REFRESH' CONTENT='1;URL=?id=<?=$_GET['id']?>'>
</head>
<body>
Upload progress:<br />
<?php
if(!$_GET['id']) die;
$info = uploadprogress_get_info($_GET['id']);
$kbytes_total = round($info['bytes_total'] / 1024);
$kbytes_uploaded = round($info['bytes_uploaded'] / 1024);
echo $kbytes_uploaded.'/'.$kbytes_total.' KB';
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
请注意,每秒都会自我刷新.你可以在这里添加一些不错的视觉进度条(如2个嵌套的<div> s,用不同的颜色),如果你愿意的话.具有上传进度的iframe自然仅在上传进行时有效,并在表单提交并且浏览器重新加载到下一页后结束其可见生命.