使用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 相关文章推荐
注意:php5.4删除了session_unregister函数
Aug 05 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
Oct 14 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php类的定义与继承用法实例
Jul 07 PHP
对比分析php中Cookie与Session的异同
Feb 19 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 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
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
Symfony核心类概述
2016/03/17 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
Javascript Object.extend
2010/05/18 Javascript
基于jQuery的倒计时实现代码
2012/05/30 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
下载官网python并安装的步骤详解
2019/10/12 Python
pytorch中的inference使用实例
2020/02/20 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
美国轮胎网站:Priority Tire
2018/11/28 全球购物
小松树教学反思
2014/02/11 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
新品发布会主持词
2014/04/02 职场文书
教研活动总结
2014/04/28 职场文书
公司承诺书格式
2014/05/21 职场文书
忠诚教育心得体会
2014/09/03 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书