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中用文本文件做数据库的实现方法
Mar 27 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
php的mssql数据库连接类实例
Nov 28 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
php session 写入数据库
Feb 13 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 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
改进的IP计数器
2006/10/09 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
javascript验证身份证号
2015/03/03 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
初步解析Python下的多进程编程
2015/04/28 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Python实现的桶排序算法示例
2017/11/29 Python
浅析python参数的知识点
2018/12/10 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
会计岗位职责
2013/11/08 职场文书
预备党员党校学习自我评价分享
2013/11/12 职场文书
2014年自我评价
2014/01/04 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
2014年学前班工作总结
2014/12/08 职场文书
初级职称评定工作总结
2015/08/13 职场文书
外出培训学习心得体会
2016/01/18 职场文书
python OpenCV学习笔记
2021/03/31 Python
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL