使用PHP接受文件并获得其后缀名的方法


Posted in PHP onAugust 05, 2015

HTML的form表单
用html的表单模拟一个文件上传的post请求,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  <html> 
  <head> 
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  <title>File Upload</title> 
  </head> 
  <body> 
   
  <form enctype="multipart/form-data" action="test.php" method="POST"> 
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> 
    Send this File:<input name="userfile" type="file"/> 
    <input type="submit" value="Send File" /> 
  </form> 
   
   
  </body> 
  </html>

注意:

要确保文件上传表单的属性是 enctype="multipart/form-data",否则文件上传不了

PHP
首先,需要解释一下PHP的全局变量$_FILES,此数组包含了所有上传的文件信息

  • $_FILE['userfile']['name'] : 客户端机器文件的原名称
  • $_FILE['userfile']['type'] : 文件的MIME类型
  • $_FILE['userfile']['size'] : 已上传的文件大小
  • $_FILE['userfile']['tmpname'] : 文件被上传后在服务器存储的临时文件名
  • $_FILE['userfile']['error'] : 和该文件上传的错误代码

思路
1、生成40位的随机字符串作为文件名
2、根据文件是图片还是语音转存到不同的文件位置
3、暂时不做文件大小和文件类型的校验

 

function processFile($files, $type) { 
    $uploadName = null; 
    foreach ($files as $name => $value) { 
      $originalName = $value['name']; 
      $arr = explode(".", $originalName); 
      $postfix = $arr[count($arr) - 1]; 
      $tmpPath = $value['tmp_name']; 
      $tmpType = $value['type']; 
      $tmpSize = $value['size']; 
    } 
     
    $newname = EhlStaticFunction::generateRandomStr(40).".".$postfix; 
     
    switch ($type) { 
      case 1 :  
        // 处理声音文件 
        $destination = VIDEOUPLOADDIR.$newname; 
        break; 
      case 2 : 
        // 处理图像文件 
        $destination = IMAGEUPLOADDIR.$newname; 
        break; 
    } 
     
    move_uploaded_file($tmpPath, $destination); 
  }

而获取所上传文件的后缀名则可以使用一下代码:

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
  <meta name="keywords" content=" keywords" />
  <meta name="description" content="description" />
</head>
<body>
  <form method="post" action="" enctype="multipart/form-data">
  <input type="file" name="upfile" size="20" />
  <input type="submit" name="submit" value="submit" />
  </form>
</body>
</html>

PHP

<?PHP
  if(isset($_POST['submit'])) {
    $string = strrev($_FILES['upfile']['name']);
    $array = explode('.',$string);
    echo $array[0];
  }  
?>

结果示例:

使用PHP接受文件并获得其后缀名的方法

PHP 相关文章推荐
虚拟主机中对PHP的特殊设置
Oct 09 PHP
php adodb分页实现代码
Mar 19 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
php中hashtable实现示例分享
Feb 13 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
ThinkPHP控制器详解
Jul 27 PHP
PHP内置加密函数详解
Nov 20 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
PHP合并discuz用户脚本的方法
Aug 04 #PHP
PHP-FPM之Chroot执行环境详解
Aug 03 #PHP
织梦sitemap地图实时推送给百度的教程
Aug 03 #PHP
php生成图片验证码的实例讲解
Aug 03 #PHP
android上传图片到PHP的过程详解
Aug 03 #PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 #PHP
php基于session实现数据库交互的类实例
Aug 03 #PHP
You might like
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
vue实现信息管理系统
2020/05/30 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Python3简单实现串口通信的方法
2019/06/12 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
美国在线珠宝商店:SZUL
2017/02/11 全球购物
WiFi云数码相框:Nixplay
2018/07/05 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
问卷调查计划书
2014/01/10 职场文书
祖国在我心中演讲稿
2014/01/15 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
个人求职意向书
2015/05/11 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
python基础之错误和异常处理
2021/10/24 Python
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers