使用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 相关文章推荐
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
PHP中基本符号及使用方法
Mar 23 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
PHP实现的解汉诺塔问题算法示例
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
计数器详细设计
2006/10/09 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
js实现日历
2020/11/07 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
Python进程通信之匿名管道实例讲解
2015/04/11 Python
利用python获取Ping结果示例代码
2017/07/06 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
详解python之协程gevent模块
2018/06/14 Python
对python中的argv和argc使用详解
2018/12/15 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
餐饮周年庆活动方案
2014/08/14 职场文书
企业宣传语大全
2015/07/13 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android