【问题标题】:PHP APC Progress BarPHP APC 进度条
【发布时间】:2011-01-26 04:08:15
【问题描述】:

更新后:在评论员建议之后。

索引.php

<?php
$id = uniqid("");
?>
</head>

<body>
<form method="post" action="frame.php" target="upload_iframe" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo $id; ?>"/>
<br />
<input type="submit" name="submit" value="Submit" />
</form>
<iframe name="upload_iframe" style="width: 400px; height: 100px;">
</iframe>

frame.php

<?php
if(isset($_POST['progress_key'])) {
    echo "hey1";
    $status = apc_fetch('upload_'.$_POST['progress_key']);
    echo $status['current']/$status['total']*100;
}
echo "hey2";
?>

仍然不起作用:(,我什至没有在框架中获取 POST 表单数据。我哪里错了?

问候。

【问题讨论】:

  • apc.rfc1867_prefixapc.rfc1867_name 的 php.ini 值是多少?隐藏字段中name 属性的值应对应于apc.rfc1867_name,您的apc_fetch 调用的前缀应对应于apc.rfc1867_prefix
  • 在 MAMP 中,我从首选项中选择了 APC,并在 conf > PHP5 > php.ini 中更新:apc.rfc1867 = on apc.max_file_size = 200M upload_max_filesize = 200M post_max_size = 200M

标签: php file-upload mamp apc


【解决方案1】:

每当您使用 APC 文件上传机制时,您都需要在表单中添加一个附加参数,用于标识正在上传的文件,并且是 apc_fetch 的关键。

<?php $id = uniqid(time()); ?>
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="myUniProgressKey" value="<?php echo $id; ?>"/>

文件上传后,upload . $id 键中的值将包含显示进度条所需的信息。最简单的方法是使用您拥有的apc_fetch 调用来对服务器进行ajax 轮询。这表明您的上传页面不需要刷新用户所在的当前页面。我过去使用过iframe,它启动了轮询服务器的间隔。上传完成后,您就可以在同一个 iframe 中显示一条完整的消息。

【讨论】:

  • 请帮助我更新帖子中的代码,做了一些更改仍然不起作用。 pastie.org/1500354 高度赞赏的帮助。 :)
  • 一种测试方法是硬编码你的进度键,设置一个单独的页面来转储apc_fetch的输出,使用你的硬编码的进度键。启动大文件上传,然后刷新测试页面以查看实际返回的内容。另外,你实现了这个的ajax位吗?你知道你需要自己实现实际的进度条吗? apc 将跟踪您的上传进度,但不会为您输出进度条。
  • 好吧,我真的不能按照你的建议去做,你能举个小代码例子吗?这真的很有帮助。而现在我最大的问题是我什至没有得到帖子的价值!此外,我猜我的 ajax 已经实现,使用当前代码,并且我在 iframe 中给你一个加载的 paste 示例中有两个不同的页面。 :) 我知道没有 JS 它不会是一个栏,但我什至没有寻找那个,如果我能得到 $status,我可以实现栏然后.. :)
  • 您的代码看起来基本正确,但这非常复杂,因此您可能应该进行一些调试。你试过var_dump$_POST 数组吗?
  • 好的,代码加载完毕,我得到了值,但当前状态总是等于状态总数代码:pastie.org/1505616
猜你喜欢
  • 2012-07-20
  • 2011-01-12
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
相关资源
最近更新 更多