【问题标题】:upload PDF file and send filename to database上传 PDF 文件并将文件名发送到数据库
【发布时间】:2016-11-20 07:40:49
【问题描述】:

可以绑定提交一个带有文件输入和文本字段的小表单

在提交时,我希望它上传(仅限 PDF 文件)并将文件名发送到我的“资源”表。

资源表如下所示:

id (AUTO_INC & Primary)
title (data from text field)
filename (from uploaded file, preferably with extension aswell)
dateadded (pulled from current date() )

这是我目前的代码;

    <form enctype="multipart/form-data" action="<? echo $PHP_SELF ?>" method="post" id="myform" class="basic-form">
    <?php
    // IF FORM SUBMIT
    if (isset($_POST['submit']))
    {   
        $title    = $_POST['title'];
        $dateLog = date("y-m-d"); // DATE OF  ADDITION
        $timeLog = date("H:i:s", time() - 3600);   // TIME OF ADDITION 

// target directory & Extensions
$uploads_dir = '../resource_docs/';
$allowedExts = array("pdf", "doc");

//Loop file uploads
    foreach ($_FILES["upload"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["upload"]["tmp_name"][$key];
            $name = $_FILES["upload"]["name"][$key];
            move_uploaded_file($tmp_name, "$uploads_dir/$name");
        }
    }

    // INSERT QUERY
    $sql="INSERT INTO resources (filename, title, dateadded)
          VALUES ('$name', '$title', '$dateLog')";

    $query = mysql_query($sql) or die("Cannot query the database.<br>" . mysql_error());

    }
    ?>

    <input type="file" name="upload" />
    <input name='title' type='text' value='' placeholder='Title Here'/>
    <input type="submit" name="submit" value="Upload"/>
    </form>

表单提交并将除文件名之外的所有内容放入数据库中,并在浏览器底部显示它正在上传,但在我的目标目录中没有任何内容。

我是否错过了一些显而易见的事情 我可以让它只接受我的编码中的 .pdf 文件吗?

【问题讨论】:

  • 您能在此处发布任何日志文件吗?就像 Linux 上的 /var/log/apache2/error.log。但是,虽然您的代码看起来不错,但您可能没有对指定目录的读/写访问权限。
  • 尝试将您的 $uploads_dir 更改为仅“resource_docs/”
  • 好的,我得到了大部分工作,但它无法上传 .pdf 其他一切工作,例如 png jpeg 等...这与服务器设置有关吗?

标签: php mysql file pdf upload


【解决方案1】:

使用 echo 语句检查循环是否执行。

例子:

foreach ($_FILES["upload"]["error"] as $key => $error) {
        echo "foreach working";
        if ($error == UPLOAD_ERR_OK) {
            echo "entering into if";
            $tmp_name = $_FILES["upload"]["tmp_name"][$key];
            $name = $_FILES["upload"]["name"][$key];
            move_uploaded_file($tmp_name, "$uploads_dir/$name");
        }
    }

【讨论】:

    【解决方案2】:

    您的文件路径可能不存在或无效。

    【讨论】:

    • 它在那里,我还在同一个目录中添加了一个新文件夹和 CHMOD 它 777 仍然没有上传和文件名没有进入 db
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2020-01-28
    • 1970-01-01
    • 2013-08-15
    • 2016-10-11
    • 1970-01-01
    • 2012-02-21
    相关资源
    最近更新 更多