使用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 相关文章推荐
?繁体转换的class
Oct 09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
php生成缩略图的类代码
Oct 02 PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 PHP
php数组分页实现方法
Apr 30 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 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
菜鸟学PHP之Smarty入门
2007/01/04 PHP
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
python快速排序代码实例
2013/11/21 Python
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python使用tornado实现简单爬虫
2018/07/28 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
python编写实现抽奖器
2020/09/10 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
经济国贸专业求职信
2014/06/18 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
学历证明样本
2015/06/16 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
AJAX学习笔记
2021/05/18 Javascript
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers