使用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之变量、常量学习笔记
Mar 27 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
Mar 23 PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
php中的静态变量的基本用法
Mar 20 PHP
详解PHP导入导出CSV文件
Nov 03 PHP
php去除数组中重复数据
Nov 18 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP使用Session实现上传进度功能详解
Aug 06 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
php中的MVC模式运用技巧
2007/05/03 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
JS排序之选择排序详解
2017/04/08 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python文件夹与文件的操作实现代码
2014/07/13 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
荷兰电脑专场:Paradigit
2018/05/05 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
小学语文教学经验交流材料
2014/06/02 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
个人存款证明书
2014/10/18 职场文书
单位计划生育责任书
2015/05/09 职场文书
怎样写观后感
2015/06/19 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
JavaScript实现简单的音乐播放器
2022/08/14 Javascript