首页 > 解决方案 > 将 PDF 上传到 PHP 目录

问题描述

我正在将 PDF 上传到一个目录,并且我的脚本适用于一个目录,但是当我有多个目录可以在页面上上传 PDF 时,我无法想出一种有效编写脚本的方法。我知道有几种方法可以做到这一点,例如编写如下所示的另一个函数,但必须有更好的方法,因此我不必为要上传 PDF 的每个目录写出整个脚本。代码如下。

if(is_post_request()) {

$targetdirectory = "../../pathofdirectory/pdf/";
$targetdirectory = $targetdirectory . basename( $_FILES['file']['name']) ;

$file_type=$_FILES['file']['type'];

if ($file_type=="application/pdf") {

 if(move_uploaded_file($_FILES['file']['tmp_name'], $targetdirectory))

 {

 $message = "The file ". basename( $_FILES['file']['name']). " is uploaded";

 }

 else {

 $message = "Problem uploading file";

 }
}

else {

 $message = "You may only upload PDFs.<br>";

}
    
}

当然还有简单的形式

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file" size="50" />
    <input class="button common" type="submit" value="Submit" />
</form>

在此先感谢您的任何建议。

标签: phpfile-upload

解决方案


如果您同意允许用户选择上传到哪个目录,您可以让他们选择。

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file" size="50" />
    <select name="folderOption">
        <option value="1">First Folder</option>
        <option value="2">Second Folder</option>
        <option value="3">Third Folder</option>
    </select>
    <input class="button common" type="submit" value="Submit" />
</form>

显然,您需要在服务器端验证不良数据。

if (is_post_request()) {
    $targetdirectory = "../../pathofdirectory/pdf/";
    $targetdirectory = $targetdirectory . basename( $_FILES['file']['name']) ;
    $file_type = $_FILES['file']['type'];
    $folderOption = $_POST['folderOption'];
    if ($folderOption == 1 || $folderOption == 2 || $folderOption == 3) {
        switch ($folderOption) {
            case 1:
                $targetdirectory = "../../pathofdirectory/pdf/";
                break;
            case 2:
                $targetdirectory = "../../pathofdirectory2/pdf/";
                break;
            case 3:
                $targetdirectory = "../../pathofdirectory3/pdf/";
                break;
            default:
                $targetdirectory = "../../pathofdirectory/pdf/";
        }
        if ($file_type == "application/pdf") {
            if(move_uploaded_file($_FILES['file']['tmp_name'], $targetdirectory)) {
                $message = "The file ". basename( $_FILES['file']['name']). " is uploaded";
            } else {
                $message = "Problem uploading file";
            }
        } else {
            $message = "You may only upload PDFs.<br>";
        }
    } else {
        $message = "Bad data received for directory choice.<br>";
    }
}

推荐阅读