2017-04-07 125 views
0

我想上传PDF到数据库。我不断收到“上传文件时出错”错误。非数据也被插入到数据库中。上传PDF并保存到数据库

请一些不太熟悉PHP和SQL的人看一看,告诉我哪里出了问题。

在稍后阶段,我将尝试合并几个pfds,然后将新的组合pdf保存到数据库。

SQL为表

CREATE TABLE `tbl_request` (
    `InvoiceNum` int(11) NOT NULL, 
    `userEmail` varchar(25) NOT NULL, 
    `Progress` enum('Uploaded','Verified and Awaiting Payment','Submitted to Department','Closed') NOT NULL DEFAULT 'Uploaded', 
    `UploadDate` datetime NOT NULL, 
    `FileName` varchar(11) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT; 

PHP代码

<?php 
session_start(); 
require_once 'class.user.php'; 
$user_home = new USER(); 

if(!$user_home->is_logged_in()) 
{ 
    $user_home->redirect('index.php'); 
} 

if($_SESSION['userRole'] !== ('user')) 
{ 
    $user_home->redirect('index.php'); 
} 

$stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid"); 
$stmt->execute(array(":uid"=>$_SESSION['userSession'])); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 

?> 

<!DOCTYPE html> 
<html class="no-js"> 

    <body>         
<div id="body"> 
    <form action="<?php print $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file" /> 
    <button type="submit" name="btn-upload">upload</button> 
    </form> 
    <br /><br /> 
    <?php 
    if(isset($_GET['success'])) 
    { 
     ?> 
     <label>File Uploaded Successfully... <a href="view.php">click here to view file.</a></label> 
     <?php 
    } 
    else if(isset($_GET['fail'])) 
    { 
     ?> 
     <label>Problem While File Uploading !</label> 
     <?php 
    } 
    else 
    { 
     ?> 
     <label>Please only upload PDF files</label> 
     <?php 
    } 
    ?> 
</div> 
<?php 
     if(isset($_POST['btn-upload'])) 
    { 
    if ($_FILES['file']['type'] == "application/pdf") { 
     $update=date("Ymdhis"); 
     $mail =$row['userEmail']; 
     $sql="INSERT INTO tbl_request(userEmail,UploadDate) VALUES('$mail','$update)"; 
     mysql_query($sql); 
     $file = $update."-".$_FILES['file']['name']; 
     $file_loc = $_FILES['file']['tmp_name']; 
     $folder="uploads/"; 
     $new_file_name = strtolower($file); 
     $final_file=str_replace(' ','-',$new_file_name);   
     if(move_uploaded_file($file_loc,$folder.$final_file)) 
     { 
      $sql="UPDATE tbl_uploads SET(FileName) VALUES('$final_file') WHERE UploadDate = $update"; 
      mysql_query($sql); 
      ?> 
      <script> 
      alert('successfully uploaded'); 
      window.location.href='index.php?success'; 
      </script> 
      <?php 
     } 
     else 
     { 
      ?> 
      <script> 
      alert('error while uploading file'); 
      window.location.href='index.php?fail'; 
      </script> 
      <?php 
     } 
    } 
    else{ 
    ?> 
      <script> 
      alert('Only pdf files may be uploaded'); 
      window.location.href='index.php?fail'; 
      </script> 
      <?php 
    } 
} 
?> 

    </body>  
</html> 

回答

-1

技术上你是不是在数据库中存储的PDF,但只能存储位置的文件的引用。因此,要获得你所得到的错误,你的if(move_uploaded_file($file_loc,$folder.$final_file))一定要失败,可能的路径问题,它看起来像您指定相对路径,

try an absolute (full path) ie windows C:\folder\ or linux /home/user/public_html/uploads/ 
0

所以我最终得到了我的代码工作,这是任何未来可能需要做同样事情的人。

<?php 
     if(isset($_POST['btn-upload'])) 
    { 

    if ($_FILES['file']['type'] == "application/pdf") { 
     $link = mysqli_connect("localhost", "root", "", "test"); 
     $update=date("Ymdhis"); 
     $mail =$row['userEmail']; 
     $sql="INSERT INTO tbl_request(userEmail,uploadDate) VALUES('$mail','$update')"; 
     mysqli_query($link,$sql); 
     $file = $update."-".$_FILES['file']['name']; 
     $file_loc = $_FILES['file']['tmp_name']; 
     $folder="upload/"; 
     $final_file = strtolower($file); 
     //$final_file=str_replace(' ','-',$new_file_name); 

     if(move_uploaded_file($file_loc,$folder.$final_file))  { 

      $sql2="UPDATE tbl_request SET FileName ='".$final_file."' WHERE uploadDate = '".$update."'"; 
      mysqli_query($link,$sql2); 
      ?> 
      <script> 
      alert('successfully uploaded'); 
      //window.location.href='index.php?success'; 
      </script> 
      <?php 
     } 
     else 
     { 
      ?> 
      <script> 
      alert('error while uploading file'); 
      //window.location.href='index.php?fail'; 
      </script> 
      <?php 
     } 
    } 
    else{ 
    ?> 
      <script> 
      alert('Only pdf files may be uploaded'); 
      //window.location.href='index.php?fail'; 
      </script> 
      <?php 
    } 
} 
?> 

的两件事情,我想改变:

  1. $link = mysqli_connect("localhost", "root", "", "test");mysqli_query($link,$sql);我相信有一种方式来获得dbconfig.php该信息(我只是不知道如何)

  2. 我希望人们能够上传3个pdf文件,然后将php代码合并成一个然后像上面一样保存的文件。

+0

你答案的最后部分是什么似乎是问题。这是你的解决方案,还是这是为了编辑这个问题? –

+0

这是一个解决方案,加上我想要做的更新。 – Dylan

相关问题