我有一个表格:
<form onsubmit="upload_start()" target="upload_iframe" action="../blocks/file_tools/upload.php" enctype="multipart/form-data" method="post">
<input type="hidden" name="APC_UPLOAD_PROGRESS" value="<?php echo md5(rand().time()); ?>" />
<input id="upload_files" name="upload_files[]" type="file" multiple accept="image/*" />
<button id="addFilesButton" type="button" class="button button_gray" title="Добавить файлы"> + Добавить файл</button>
<button class="button button_green" type="submit" title="Загрузить выбранный файлы">Загрузить</button>
</form>
在此文件中,我读取了上传状态:
<?php
session_start();
$id = isset($_POST['id']) ? $_POST['id'] : 0;
$status =apc_fetch("upload_".$id);
header('Content-type: application/json');
print_r(apc_fetch("upload_".$id));
echo json_encode($status);
?>
我通过阿贾克斯发送
//Получаем статус загрузки фалов на сервер.
function upload_status()
{
var id = $("input[name='APC_UPLOAD_PROGRESS']").val();
$.ajax(
{
url: '/blocks/file_tools/upload_status.php', type: 'POST', dataType: 'HTML', charset: 'utf-8', async:false,
data: ({id:id}),
success: function(data)
{
// some code
}
})
setTimeout(upload_status, 2000);
}
如果我上传文件,代码可以正常工作如果要加载多个文件,APC 将返回仅加载数组 upload_files[ ] 中的最后一个文件的状态。如何获取数组 upload_files[ ] 中每个文件的上传状态?
请参阅 http://php.net/manual/en/apc.configuration.php#ini.apc.rfc1867:
请注意,文件上传跟踪在这一点上不是线程安全的,因此 在上一个上传仍在进行时发生的新上传将 禁用对上一个的跟踪。
这基本上意味着一次只能显示单个文件的上传进度。
如果你需要它不好,最好通过网络服务器实现:
- http://wiki.nginx.org/HttpUploadProgressModule
- http://commons.apache.org/proper/commons-fileupload/using.html("查看进度"部分)