使用PHP接受文件并获得其后缀名的方法

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];
  }
?>

结果示例:

(0)

相关推荐

  • php 如何获取文件的后缀名

    比如图片文件的后缀,jpg或gif等 有两个方法 一,假如$img为图片文件名 $img=12345.gif; $img_ext = substr($img, strrpos($img, '.')); 二,用到php数组,先把文件名字符串读取到数组中 $ext2=explode(".",$img); $count=count($ext2); $count2=$count-1; $file_name = $urlstr .'.'.$ext2[$count2];//得到后缀并重新定义新的文

  • PHP实现获取文件后缀名的几种常用方法

    本文实例讲述了PHP实现获取文件后缀名的几种常用方法.分享给大家供大家参考.具体如下: 方法1: function get_file_type($filename){ $type = substr($filename, strrpos($filename, ".")+1); return $type; } 方法2: function get_file_type($filename) { $type = pathinfo($filename); $type = strtolower($t

  • PHP文件上传后缀名与文件类型对照表整理

    ie 火狐 id 后缀名 php识别出的文件类型 0 gif image/gif 1 jpg image/jpeg 2 png image/png 3 bmp image/bmp 4 psd application/octet-stream 5 ico image/x-icon 6 rar application/octet-stream 7 zip application/zip 8 7z application/octet-stream 9 exe application/octet-str

  • PHP实现批量修改文件后缀名的方法

    本文实例讲述了PHP实现批量修改文件后缀名的方法.分享给大家供大家参考.具体如下: /** * 批量修改文件后缀名 * @param $path 文件夹路径 * @param $sext 原文件后缀名 ($sext=all说明整个目录的所有文件) * @param $dext 目的文件后缀名 * @return void */ function foreachDir($path,$sext,$dext){ $handle=opendir($path); if($handle){ while (f

  • php中取得文件的后缀名?

    第一类方法是利用数组完成的.先把文件名切割成数组,然后想办法取得数组最后一个元素就OK了.第二类方法是通过字符串的处理来完成,还有一种方法是用pathinfo()函数. 复制代码 代码如下: $pic = 'abc.3434.342.12123.123.exe'; $pics = explode('.' , $pic); /*得到数组总数,然后取最后一个*/ echo $num = count($pics); echo '<br>'.$pics[$num-1]; /*遍历数组,取得最后一个元素

  • php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)

    网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特色),学php的人都知道文件上传怎么做,但很多人在编程中却可能忽视了一些细节问题,那就是文件的类型(MIME).在表单将文件提交给php做处理之前,浏览器会先解析识别一边是什么类型的文件,之后进入php处理环节,php又会去识别解析此文件的原始类型(并不是说你改成什么后缀就是什么文件).在这个过程中会有一些浏览器兼容,更准确来说是文件类型解析标识不一致的问

  • php中批量修改文件后缀名的函数代码

    复制代码 代码如下: <?php function foreachDir($path){ $handle=opendir($path); if($handle){ while (false !== ($file = readdir($handle))) { if($file!="." && $file!='..'){ if(is_dir($path.$file)){ echo $path.$file."<br/>"; foreach

  • php上传功能集后缀名判断和随机命名(强力推荐)

    不废话了,具体请看下文代码示例讲解. form.php <html> <head> <meta http-equiv="content-type" content="text/html" charset="utf-8"> <title>Upload Image</title> </head> <body> <form method="post&qu

  • PHP获取文件后缀名的三个函数

    选好一种记住,以后需要使用的时候就可以直接使用,或者来本站查看本文也是可以滴. 复制代码 代码如下: <?php //方法一: function extend_1($file_name) { $retval=""; $pt=strrpos($file_name, "."); if ($pt) $retval=substr($file_name, $pt+1, strlen($file_name) - $pt); return ($retval); } //方法

  • php一行代码获取文件后缀名实例分析

    本文实例讲述了php一行代码获取文件后缀名的方法.分享给大家供大家参考.具体方法分析如下: php中一行代码获取文件后缀名的方法要结合很多的函数了,我们这个有点像asp中的函数了,下面来一起看看吧. 实例: 复制代码 代码如下: $filename  = 'D:/wamp/www/sparkphp/rar'; $rs =  strtolower(trim(substr(strrchr($filename, "."), 1))); 详解: strrchr()函数查找字符串在另一个字符串中

随机推荐