使用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 相关文章推荐
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
php 高性能书写
Dec 11 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
一个简单的php路由类
2016/05/29 PHP
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
Express的路由详解
2015/12/10 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
原生js实现简单轮播图
2020/10/26 Javascript
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
Python Flask-web表单使用详解
2017/11/18 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
代码实例讲解python3的编码问题
2019/07/08 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
党员创先争优公开承诺书
2014/03/28 职场文书
运动会广播稿100字
2014/09/14 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
单位接收函格式
2015/01/30 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python