使用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入门源程序
Oct 09 PHP
PHP 中文乱码解决办法总结分析
Jul 30 PHP
php array_walk() 数组函数
Jul 12 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
Oct 29 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
PHP文件后缀不强制为.php方法
Mar 31 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP header函数分析详解
2011/08/06 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
常用的10个Python实用小技巧
2020/08/10 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
本科毕业生自我鉴定
2013/11/02 职场文书
副总经理工作职责
2013/11/28 职场文书
董事长秘书职责
2014/01/31 职场文书
出生证明公证书
2014/04/09 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
质量承诺书格式
2014/05/20 职场文书
拔河比赛口号
2014/06/10 职场文书
2016年入党心得体会范文
2016/01/23 职场文书