PHP实现视频文件上传完整实例


Posted in PHP onAugust 28, 2014

本文以一个完整实例的形式实现了视频文件上传的功能。虽然是比较基础的应用,仍有一定的参考价值。分享给大家供大家参考之用。具体方法如下:

首先,对PHP来说视频也属于文件,我们利用这个道理,可以通过与上传普通文件类似的方式实现上传PHP视频文件。不同的是视频文件一般较大,上传时间长,而php配置文件也对上传文件的大小有限制。
如果需要更好地用PHP实现文件上传,还是推荐使用FTP上传方式。

一、PHP处理代码如下:

<?php
//设置最多允许10个文件同时上传
define('MUILTI_FILE_UPLOAD', '10');
//设置文件大小不超过5MB
define('MAX_SIZE_FILE_UPLOAD', '500000' );
//设置上传文件的存储目录
define('FILE_UPLOAD_DIR', '/fileUploads');
//允许上传的文件扩展名
$array_extention_interdite = array( '.flv' , '.wmv' , '.rmvb' , '.php' , '.php3' , '.php4' , '.exe' , '.msi' , '.htaccess' , '.gz' );
//显示信息的公共函数
function func_message($message='', $ok=''){
 echo '<table width="100%" cellspacing="0" cellpadding="0" border="0">';
 if($ok == true)
 echo '<tr><td width="50%"> '.$message.'</td></tr>' ;
 else
 echo '<tr><td width="50%"> '.$message.'</td></tr>';
 echo '</table>';  
}
//处理表单提交
$action = (isset($_POST['action'])) ? $_POST['action'] :'' ;
$file = (isset($_POST['file'])) ? $_POST['file'] :'' ;
if($file != '')
  $file = $file.'/';
$message_true = '';
$message_false = '';
switch($action){
 case 'upload' :  
 chmod(FILE_UPLOAD_DIR,0777);  
 for($nb = 1 ; $nb <= MUILTI_FILE_UPLOAD ; $nb ++ ){   
  if( $_FILES['file_'.$nb]['size'] >= 10 ){ 
  if ($_FILES['file_'.$nb]['size'] <= MAX_SIZE_FILE_UPLOAD ){ 
   if (!in_array(ereg_replace('^[[:alnum:]]([-_.]?[[:alnum:]])*.' ,'.', $_FILES['file_'.$nb]['name'] ) , $array_extention_interdite) ){ 
           if($_POST['file_name_'.$nb] !='')
             $file_name_final = $_POST['file_name_'.$nb].$extension ;
           else
             $file_name_final = $_FILES['file_'.$nb]['name'] ;
           //修改文件名
           $file_name_final = strtr($file_name_final, 'aaaaaa', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
           $file_name_final = preg_replace('/([^.a-z0-1]+)/i', '_', $file_name_final ); 
           
           $_FILES['file_'.$nb]['name'] = $file_name_final;  
           //开始上传
           move_uploaded_file( $_FILES['file_'.$nb]['tmp_name'] , FILE_UPLOAD_DIR . $file . $file_name_final );
       
           $message_true .= '文件上传成功 : '.$_FILES['file_'.$nb]['name'] .'<br>'; 
        }else
           $message_false .= '文件上传失败 : '.$_FILES['file_'.$nb]['name'] .' <br>';
      }else
        $message_false .= '文件最大尺寸不能超过'.MAX_SIZE_FILE_UPLOAD/1000 . 'KB : "'.$_FILES['file_'.$nb]['tmp_name'].'" <br>';
    }
  }//end for
 break;
}
?>

二、HTML代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<title>PHP文件上传</title>
<style type="text/css" rel="stylesheet" />
.border{
 background-color:#000000
}
.box{
 background-color:#f8f8f9;
}
.text{ 
 color:#000000;
 font-family: "宋体";
 font-size: 12px;
 font-weight:bold
}
input, select{
 font-size: 12px;
}
body{
  margin: 0;
}
</style>
<body>
 <!-- 文件上传表单,enctype属性是必须的 -->
 <form name="form" enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF'] ; ?>">
 <input type="hidden" name="action" value="upload">
 <table border="0" cellspacing="1" cellpadding="0" align="center" class="border">
  <tr> 
  <td>
   <?php
   if($message_true != '')
    func_message($message_true, true);
   if($message_false != '')
    func_message($message_false, false);
   ?>
   <table width="100%" border="0" cellspacing="5" cellpadding="2" align="center" class="box">
   <?php 
    for($nb = 1 ; $nb <= MUILTI_FILE_UPLOAD ; $nb ++ ){ 
   ?>
   <tr class="text"> 
    <td>上传文件: <?php echo $nb; ?></td> 
    <td><input type="file" name="file_<?php echo $nb; ?>"></td>
    <td>新文件名(包括扩展名):<?php echo $nb; ?> </td>
    <td><input type="text" name="file_name_<?php echo $nb; ?>"></td>
   </tr>
   <?php } ?>
   <tr> 
    <td colspan="2" align="right" class="text">
    上传目的地址:<?php echo FILE_UPLOAD_DIR ;?>
     <select name="file">    
     <option value=""></option>
     <?php 
     $repertoire = opendir(FILE_UPLOAD_DIR); 
     while( $file = readdir($repertoire) ) { 
      $file = str_replace('.','',$file);
      if( is_dir($file)) { 
     ?> 
     <option value="<?php echo $file; ?>"> <?php echo $file; ?>/</option>
     <?php 
       } 
     } 
     closedir($repertoire); 
     ?>
    </select>
    </td>
    <td colspan="2" align="right"><input type="submit" value="可同时上传<?php echo $nb-1; ?> 个文件 "></td>
   </tr>
   </table>
  </td>
  </tr>
 </table>
 </form>  
</body>
</html>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
php下使用以下代码连接并测试
Apr 09 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
PHP系统命令函数使用分析
Jul 05 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
php中OR与|| AND与&amp;&amp;的区别总结
Oct 26 PHP
将php数组输出html表格的方法
Feb 24 PHP
PHP生成word文档的三种实现方式
Nov 14 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
PHP数据库处理封装类实例
Dec 24 PHP
详细对比php中类继承和接口继承
Oct 11 PHP
用PHP做了一个领取优惠券活动的示例代码
Jul 05 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 PHP
PHP获取表单所有复选框的值的方法
Aug 28 #PHP
PHP中echo和print的区别
Aug 28 #PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 #PHP
PHP防盗链代码实例
Aug 27 #PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 #PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 #PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 #PHP
You might like
初学CAKEPHP 基础教程
2009/11/02 PHP
php验证码生成代码
2015/11/11 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
理解JS绑定事件
2016/01/19 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
实现python版本的按任意键继续/退出
2016/09/26 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
python sqlite的Row对象操作示例
2019/09/11 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
python如何随机生成高强度密码
2020/08/19 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
物流经理自我评价
2013/09/23 职场文书
团员的自我评价
2013/12/01 职场文书
颁奖晚会主持词
2014/03/25 职场文书
医德医风自我评价
2014/09/19 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
Python实现位图分割的效果
2021/11/20 Python
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL