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

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

转载

这篇文章主要介绍了PHP实现视频文件上传的技巧,包含了PHP配置信息的设计及大文件的处理,需要的朋友可以参考下

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

首先,对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>

时间: 2024-12-17 09:20:29

PHP实现视频文件上传完整实例的相关文章

Struts2 + uploadify 多文件上传完整实例!

首先我这里使用的是  Jquery  Uploadify3.2的版本  导入相关的CSS  JS    <link rel="stylesheet" type="text/css" href="<%=basePath%>css/uploadify/uploadify.css"> <script src="<%=basePath%>js/jquery.min.js"></sc

jQuery.uploadify文件上传组件实例讲解

1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好,无刷新,带上传进度等等.在最近的短信平台开发中,使用Uploadify进行文件上传. Uploadify官网地址是:http://www.uploadify.com/ 可满足项目开发需求. 下载地址:http://www.uploadify.com/wp-content/uploads/files/

在ASP.NET中实现图片、视频文件上传方式

一.图片 1.在前端用<asp:FileUpload ID="UpImgName" runat="server"/>控件 2.在后台.cs中写上 protected void btnSubmit_Click(object sender,EventArgs e) { string strImgPath=string.Empty; string strDateTime=dateTime.Now.Tostring("yyyyMMddhhmmss&qu

【SSH2(实践篇)】--Struts2文件上传下载实例

上篇文章又一次回顾了Struts2的运行机制,对它的运行步骤做了一步步的解析,这个解析不但再一次理清了Struts2的使用方法,而且对它的映射机制进行了深入的解析,并在最后通过一个实例来介绍了Struts2的一种使用方法,这里将做一个有关文件上传下载的实例. 一.文件上传 Struts2并没有提供文件上传的组件,所以想要实现上传的功能就必须通过第三方组件来实现,在Struts2引用的jar中包含了文件上传的组件,它是通过commons-fileupload.jar和commons-io.jar来

struts2+extjs文件上传完整实现(解决了上传中的各种问题)

首先需要引入上传控件 <script type="text/javascript" src="<%=basePath%>/js/ext/examples/ux/fileuploadfield/FileUploadField.js" charset="utf-8"></script> 弹出上传框对应extjs代码 var uploadForm=new Ext.FormPanel({ id:'uploadForm'

Tp3如何实现本地视频文件上传到七牛云

对于七牛云的使用,估计有些刚接触开发的技术人员还不太清楚,那么更不要说如何实现本地视频上传到七牛云转储了,其实这个技术并没有想象中的那么困难,下面就来跟大家详细介绍一下流程: 1.首先我们要先去寻找七牛云的SDK网址,打开后直接下载就行了; 2.下载完成之后我们把它放在tp框架的./ThinkPHP/Extend/Vendor/目录下; 3.完成之后,前期的准备工作就完成了,接下来就是自己上手写代码了: 首先肯定是先在模板部分建立一个form表单: *视频上传: 我们就提交到News控制器里的d

MultipartFile文件上传的实例

什么是MultipartFile MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称.[来自百度知道]   方法总结 byte[] getBytes() 以字节数组的形式返回文件的内容. String getContentType 返回文件的内容类型. FileItem getFileItem() 返回底层的org.apache.commons.fileupload.FileItem实例. InputStream getInpu

VUE大文件上传解决方案实例代码

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下

JS大文件上传解决方案实例代码

需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包含层级结构. 支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输.关闭浏览器后保留进度信息. 支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端文件夹层级结构与本地相同. 支持断点续传,关闭浏览器或刷新浏览器后仍然能够保留