Php上传docx和pdf文件

时间:2017-01-10 00:15:57

标签: php sql file upload directory

我已经使用此代码上传图片并且有效,但现在我已经尝试将其更改为上传docx和pdf,但它始终只提供错误docx和pdf文件,它无法检查docx和pdf的扩展名像jpg,png等...? 对不起我的英文。

<?php   
extract($_POST);

$UploadedFileName=$_FILES['UploadImage']['name']['nome'];
if($UploadedFileName!='') {
  $upload_directory = "../../../documentos/formularios/"; 
  $nome=$_POST['nome'];
  $TargetPath=time().$UploadedFileName;
  $imageFileType = pathinfo($TargetPath,PATHINFO_EXTENSION);
  $ficheirogrande='<div class="alert alert-danger">O Ficheiro ultrapassa <strong>2 Megas</strong></div>';   
  $preenchimentoobrigadorio='<div class="alert alert-danger">Campo <strong>nome</strong> de preenchimento obrigatório</div>';   
  $apenasficheiros='<div class="alert alert-danger">Apenas Ficheiros <strong>PDF e DOCX</strong> podem ser inseridos</div>';

  if(empty($_POST['nome']) || false === filter_var($_POST['nome'])){
    echo $preenchimentoobrigadorio; 
  } else {
    if ($_FILES["UploadImage"]["size"] > 2200000){ //2.09808
      echo $ficheirogrande;
    } else {
      if($imageFileType != "application/msword" && $imageFileType != "docx" && $imageFileType != "pdf" ){
        echo $apenasficheiros;
      } else {
        if(move_uploaded_file($_FILES['UploadImage']['tmp_name'], $upload_directory.$TargetPath)){
          $caminho="documentos/formularios/$TargetPath"; 
          $queryinserir="INSERT INTO DOCUMENTOS(LINK_DOCUMENTOS,NOME,FORMULARIOS) VALUES ('$caminho','$nome','1')";

          mysqli_query($conn,$queryinserir); 

          $enviado='<div class="alert alert-success">Documento Inserido com <strong>Sucesso</strong></div>';
          echo $enviado;    
        } else {    
          $naoenviado='<div class="alert alert-danger">Documento <strong>Nao Inserido</strong></div>';
          echo $naoenviado;
        }
      }
    }
  }
}
?>

1 个答案:

答案 0 :(得分:0)

您没有将新文件保存在$targetPath,因此该文件不存在,您无法获取扩展程序

此外,使用扩展名不是一种安全的方法。您应该使用MIME类型。