Heim >Backend-Entwicklung >PHP-Tutorial >PHP 文件上传进度条的简单实现方法

PHP 文件上传进度条的简单实现方法

WBOY
WBOYOriginal
2016-07-25 09:00:521156Durchsuche
为大家提供二种php 文件上传进度条的代码,供大家学习参考。

一种是使用APC扩展模块:http://pecl.php.net/package/apc。 另外一种是使用PECL扩展模块 uploadprogress实现:http://pecl.php.net/package/uploadprogress。

1、APC实现方法: 安装APC,参照官方文档安装,可以使用PECL模块安装。 配置php.ini,设置参数 apc.rfc1867=1 ,使APC支持上传进度条功能, 示例:

<?php
/**
APC方法 上传进度条
*/
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //上传请求
$status = apc_fetch('upload_' . $_POST['APC_UPLOAD_PROGRESS']);
$status['done'] = 1;
echo json_encode($status); //输出给用户端页面里的ajax调用,相关文档请自己寻找
exit;
} elseif (isset($_GET['progress_key'])) { //读取上传进度
$status = apc_fetch('upload_'.$_GET['progress_key']);
echo json_encode($status);
exit;
} else {
//其他代码,比如上传表单等
}

2、uploadprogress 模块实现方法: 使用PECL模块安装方法安装该模块 php.ini里面设置 uploadprogress.file.filename_template = “/tmp/upd_%s.txt” 示例:

<?php
/**
 上传进度条
 bbs.it-home.org
*/

if($_SERVER['REQUEST_METHOD']=='POST') {
if (is_uploaded_file($_FILES['upfile']['tmp_name'])) {
$upload_dir = 'your_path/';
$ext = strrchr($_FILES['video']['name'], '.');
$sessid = $_POST['UPLOAD_IDENTIFIER'] ;
$tmpfile = $upload_dir . $sessid;
$sessfile = $upload_dir . $sessid .$ext;
if (move_uploaded_file($_FILES['upfile']['tmp_name'],$tmpfile)) {
//上传成功
} else {
//上传失败
} else {
//上传错误

} elseif (!empty($_GET['sessid'])) {
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type:text/html;charset=UTF-8");

$unique_id = $_GET['sessid'];
$uploadvalues = uploadprogress_get_info($unique_id);

if (is_array($uploadvalues)) {
echo json_encode($uploadvalues);
} else {
//读取进度失败,另外处理逻辑
}

} else {
//显示上传表单
}
?>

有上传进度条的代码,看起来比较直观,用户体验好。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn