使用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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
用header 发送cookie的php代码
Mar 16 PHP
php实现jQuery扩展函数
Oct 30 PHP
php设计模式 Visitor 访问者模式
Jun 28 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
PHP __call()方法实现委托示例
May 20 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中对用户身份认证实现两种方法
2011/06/04 PHP
php while循环得到循环次数
2013/10/26 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
python 基于wx实现音乐播放
2020/11/24 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
2015年酒店销售部工作总结
2015/07/24 职场文书
学术会议开幕词
2016/03/03 职场文书