2016-09-20 105 views
-1

我有一个页面,我希望用户能够上传.pdf,.docx和.doc文件。 PDF和DOCX上传工作正常,但不会允许DOC文件。PHP .doc文件上传不起作用

这里是我的外形和输入按钮:

<form action="?action=uploadForm" method="post" enctype="multipart/form-data" style="border:1px solid black;"> 
<input type="file" class="btn btn-md btn-primary btn-block" name="fileToUpload" id="fileToUpload" accept=".pdf,.docx,.doc" title="PDF and Word files only" /> 

这似乎与该文件永远不会被投入$_FILES DOC文件。

这是我所有的文件验证/上传逻辑:

if (isset($_GET['action']) == 'uploadForm') { 
    // Get the option from the dropdown, so we can upload the form to the right directory 
    $selectedTypeOfForm = $_POST['typeOfForm']; 

    $target_dir = "files/" . $selectedTypeOfForm . "/";    // The directory for the upload to go to 
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); // The name of the file being uploaded 
    $fileName = basename($_FILES["fileToUpload"]["name"]); 
    $uploadOk = 1; 
    $fileType = pathinfo($target_file,PATHINFO_EXTENSION); 

    dump($_FILES); 

    $_SESSION['message'] .= "<br>"; 

    // Check if file already exists 
    if (file_exists($target_file)) { 
     $_SESSION['message'] .= "Sorry, the file <b>" . $fileName . "</b> already exists.<br>"; 
     $uploadOk = 0; 
    } 

    // Check file size 
    if (($fileType == "pdf" && $_FILES["fileToUpload"]["size"] > MAXIMUM_PDF_SIZE) || ($fileType == "doc" && $_FILES["fileToUpload"]["size"] > MAXIMUM_WORD_SIZE) || ($fileType == "docx" && $_FILES["fileToUpload"]["size"] > MAXIMUM_WORD_SIZE)) { 
     $_SESSION['message'] .= "Sorry, the file <b>" . $fileName . "</b> is too large. The file must be under "; 

     if ($fileType == "pdf") { 
      $_SESSION['message'] .= (MAXIMUM_PDF_SIZE/1000000) . "MB for a PDF.<br>"; 
     } else { 
      $_SESSION['message'] .= (MAXIMUM_WORD_SIZE/1000000) . "MB for a Word document.<br>"; 
     } 

     $uploadOk = 0; 
    } 

    // Allow certain file formats 
    if($fileType != "pdf" && $fileType != "doc" && $fileType != "docx") { 
     $_SESSION['message'] .= "Sorry, only PDF, DOC, and DOCX files are allowed. You tried to upload a <b>" . strtoupper($fileType) . "</b>.<br>"; 
     $uploadOk = 0; 
    } 

    // FINAL UPLOAD 
    // Check if $uploadOk is set to 0 by an error 
    if ($uploadOk == 0) { 
     $_SESSION['message'] .= "<br>Sorry, your file <b>" . $fileName . "</b> was not uploaded.<br>"; 
    // if everything is ok, try to upload file 
    } else { 
     if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
      $_SESSION['message'] .= "<br>The file <b>" . basename($_FILES["fileToUpload"]["name"]) . "</b> has been uploaded.<br>"; 
     } else { 
      $_SESSION['message'] .= "<br>Sorry, there was an error uploading the file <b>" . $fileName . "</b>.<br>"; 
     } 
    } 

    // header('Location:/forms.php'); 
    echo "<a href='/forms.php'>FORMS</a>"; 
    exit; 
} 

并上传.doc文件显示以下信息:

Sorry, the file already exists. 
Sorry, only PDF, DOC, and DOCX files are allowed. You tried to upload a . 

Sorry, your file was not uploaded. 
+0

你得到一个“该文件已存在”?那么...... – arkascha

+0

'if(isset($ _ GET ['action'])=='uploadForm')' - 太多人一遍又一遍地犯同样的错误。这是一个误报。 –

+0

为什么被标记为“javascript”? –

回答

0

的问题是在PHP upload_max_filesizepost_max_size。 INI。在我的代码触及它之前,该文件已经消失,因为这些值被设置为低于我想要上传的.doc文件的大小。