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安装为Apache DSO
Oct 09 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
html静态页面调用php文件的方法
Nov 13 PHP
php使用pdo连接mssql server数据库实例
Dec 25 PHP
php实现网页缓存的工具类分享
Jul 14 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
laravel入门知识点整理
Sep 15 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php若干单维数组遍历方法的比较
2011/09/20 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
python基础教程之循环介绍
2014/08/29 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
能源工程专业应届生求职信
2014/03/01 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
JavaScript实现两个数组的交集
2022/03/25 Javascript
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android