【发布时间】:2017-05-24 08:58:38
【问题描述】:
我已经使用此代码上传图像并且它有效,但现在我尝试将其更改为上传 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;
}
}
}
}
}
?>
【问题讨论】:
-
$_FILES['UploadImage']['name']['nome']是什么?!你不会在这一行得到错误吗?!而PATHINFO_EXTENSION只会返回文件扩展名,所以你可能永远不会有application/msword作为文件扩展名。同样在这一行if($imageFileType != "application/msword" && $imageFileType != "docx" && $imageFileType != "pdf" ){你应该使用||而不是&&否则它将总是返回false,这就是你总是得到错误的原因......
标签: php sql file upload directory