2017-04-07 123 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

相關問題