使用PHP上传pdf文件到mysql

问题描述 投票:0回答:1

我是 PHP 的新手。我正在为员工文档创建一个系统。基本上,用户可以上传员工文件以便更好地保管。我的问题是我似乎无法使我在网上看到的代码工作。

我的数据库中有两个表“tbl_employee”和“tbl_file”。 Emp_ID 是 tbl_file 的外键。

这是代码:

       <div class="row">
                        <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
                                    <div class="card influencer-profile-data">
                                        <div class="card-body">
                                             <div class="" id="message"></div>
                                            <form id="validationform" name="docu_form" data-parsley-validate="" novalidate="" enctype="multipart/form-data" >
                                                <div class="form-group row">
                                                    <label class="col-12 col-sm-3 col-form-label text-sm-right"><i class="fa fa-file-word"></i> Document Info</label>
                                                </div>
                                                <div class="form-group row">
                                                    <label class="col-12 col-sm-3 col-form-label text-sm-right">Upload Document</label>
                                                    <div class="col-12 col-sm-8 col-lg-6">
                                                        <input data-parsley-type="alphanum" type="file" alt="document_name" id="document_name" accept=".docx, .doc, .pptx, .ppt, .xlsx, .xls, .pdf, .odt" required="" placeholder="" class="form-control">
                                                        <footer style="font-size: 11px"><b>File Type:</b><font color="red"><i>.docx .doc .pptx .ppt .xlsx .xls .pdf .odt</i></font></footer>
                                                    </div>
                                                </div>
                                                <div class="form-group row">
                                                    <label class="col-12 col-sm-3 col-form-label text-sm-right">Document Tilte</label>
                                                    <div class="col-12 col-sm-8 col-lg-6">
                                                        <input data-parsley-type="alphanum" alt="document_decription" type="text" required="" placeholder="" class="form-control">
                                                    </div>
                                                </div>
                                                <div class="form-group row">
                                                    <label class="col-12 col-sm-3 col-form-label text-sm-right">Employee</label>
                                                    <div class="col-12 col-sm-8 col-lg-6">
                                                       <select data-parsley-type="alphanum" type="text" id="Emp_ID" required="" placeholder="" class="form-control">
                                                        <?php 
                                                            $conn = new class_model();
                                                            $emp = $conn->fetchAll_employee();
                                                         ?>
                                                           <option value="">&larr; Select Employee &rarr;</option>
                                                            <?php foreach ($emp as $row) { ?>
                                                           <option value="<?= $row['Emp_ID']; ?>" alt="Emp_ID"><?= $row['emp_name']; ?></option>
                                                       <?php } ?>
                                                       </select>
                                                    </div>
                                                </div>

                                                </div>
                                                <div class="form-group row text-right">
                                                    <div class="col col-sm-10 col-lg-9 offset-sm-1 offset-lg-0">
                                                        
                                                        <button type="button" class="btn btn-space btn-primary" id="btn-docu">Submit</button>
                                                    
                                                    </div>
                                                    
                                                </div>
                                            </form>
                                        </div>
                                    </div>
                            </div>
                        </div>

</div>
</div>   

这是js:

<script>
           document.addEventListener('DOMContentLoaded', () => {
              let btn = document.querySelector('#btn-docu');
              btn.addEventListener('click', () => {

              const document_name = document.querySelector('input[id=document_name]').value; 
              const document_decription = document.querySelector('input[alt=document_decription]').value;
              var Emp_ID= document.querySelector(".Emp_ID select option:checked").value;

             var data = new FormData(this.form);

                data.append('document_name', $('#document_name')[0].files[0]);
                data.append('document_decription', document_decription);
                data.append('Emp_ID', Emp_ID);
   

                if (document_name === '' || document_decription === '' || Emp_ID === '') {
                  $('#message').html('<div class="alert alert-danger"> Required All Fields!</div>');
                  } else {
                      $.ajax({
                          url: 'add_document.php',
                          type: "POST",
                          data: data,
                          processData: false,
                          contentType: false,

                          async: false,
                          cache: false,

                          success: function(data) {
                              $('#message').html(data);

                          },
                          error: function(data) {
                              console.log("Failed");
                          }
                      });
                  }     

              });
          });
      </script>

PHP:

来自具有函数

的php文件
public function add_document($document_name, $document_decription, $Emp_ID){
           $stmt = $this->conn->prepare("INSERT INTO `tbl_file` (`document_name`, `document_decription`, `Emp_ID`) VALUES(?, ?, ?)") or die($this->conn->error);
            $stmt->bind_param("ssi", $document_name, $document_decription, $Emp_ID);
            if($stmt->execute()){
                $stmt->close();
                $this->conn->close();
                return true;
            }
        }

<?php
  require_once "assets/class_model.php";
    if(ISSET($_POST)){
        $conn = new class_model();

          $files = addslashes(file_get_contents($_FILES['document_name']['tmp_name']));
          $document_name ="../sample/files/". addslashes($_FILES['document_name']['name']);
          move_uploaded_file($_FILES["document_name"]["tmp_name"], $_SERVER['DOCUMENT_ROOT']."/sample/files/" .   addslashes($_FILES["document_name"]["name"]));
          $document_decription = trim($_POST['document_decription']);
          $Emp_ID = trim($_POST['Emp_ID']);
        

        $doc = $conn->add_document($document_name, $document_decription, $Emp_ID);
        if($doc == TRUE){
            echo '<div class="alert alert-success">Add Document Successfully!</div><script> setTimeout(function() {  window.history.go(-1); }, 1000); </script>';

          }else{
            echo '<div class="alert alert-danger">Add Document Failed!</div><script> setTimeout(function() {  window.history.go(-0); }, 1000); </script>';
        }
    }
?>


我尝试了不同的代码,但我似乎无法让它工作

javascript php html mysql ajax
1个回答
-1
投票

我无法检查您的脚本问题,因为缺少 class_model.php。

为了确保您的设置正确,我建议您先上传不带 javascript 的文件,如下所述: https://www.php.net/manual/en/features.file-upload.post-method.php

您使用的服务器和可用的扩展可能很重要,因为并非在所有设置中 php 本机文件上传都有效。

显然,您没有以正确的方式进行操作 - 您编写代码的方式无法扩展和适当测试 一个好的开始https://phptherightway.com/

也可以考虑使用像 Laravel 或 Symfony 这样的框架,需要学习但值得花时间。

对于这个 porpose 我会使用 https://symfony.com/doc/current/components/http_foundation.html 存在一个很好的文档:https://symfony.com/doc/current/controller/upload_file.html

© www.soinside.com 2019 - 2024. All rights reserved.