【问题标题】:input file type, upload only selected extension输入文件类型,只上传选定的扩展名
【发布时间】:2016-02-24 06:14:59
【问题描述】:

我有 php 文件来上传不同类型的图像文件,如 .jpg、.gif 很快,但我的问题是我还需要上传文件,如 Microsoft Office 文件,如 .doc、.docx 和 .xlsx,我可以不知道如何使这个东西与那种扩展一起工作,视频和音乐也被限制上传。

我当前的代码如下:

功能

function GetExtension($imagetype){
 if(empty($imagetype)) return false;
 switch($imagetype){
   case 'image/bmp': return '.bmp';
   case 'image/gif': return '.gif';
   case 'image/jpeg': return '.jpg';
   case 'image/png': return '.png';
 default: return false;
 }
}

代码流程

if(isset($_POST['submit'])){

    $tmp_file = $_FILES['file_upload']['tmp_name'];
    $target_file = basename($_FILES['file_upload']['name']);
    $imgtype = $_FILES['file_upload']['type'];
    $ext = GetImageExtension($imgtype);
    $imagename = date("d-m-Y")."-".time().$ext;
    $upload_dir = "../images/file/".$imagename;

    if(move_uploaded_file($tmp_file, $upload_dir)){

        //// some code here...........

    } else {
        $error = $_FILES['file_upload']['error'];
    }
}

【问题讨论】:

  • 为什么要获取扩展名,上传文件时他们会提供各种扩展名。
  • 我只是按照 lynda.com 中给出的代码进行操作,您有什么好的建议,以便我可以上传 Microsoft Office 文件
  • 是的,我在下面看到了我的答案。
  • 是的,但我认为您的解决方案接受用户上传的所有文件,视频和音乐仅限上传。
  • 我已经更新了我的答案检查一下。

标签: php input


【解决方案1】:

你可以得到如下的扩展:

function GetExtension($imagetype){
 if(empty($imagetype)) return false;
 switch($imagetype){
   case '.bmp': return true;
   case '.gif': return true;
   case '.jpg': return true;
   case '.png': return true;
   case '.doc': return true;
   case '.docx': return true;
   case '.xls': return true;
   case '.xlsx': return true;
   default: return false;
 }
}


....
$path = $_FILES['file_upload']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
$check_ext = GetImageExtension($ext);
if($check_ext) {
    ....
}
....

【讨论】:

  • 我无法保存上传文件的文件名,也无法在文件夹分配../images/file/上找到文件上传
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 2014-07-16
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多