2017-08-13 103 views
0

我創建的網站應該可以讓用戶上傳和下載文件。上傳文件時,名稱和路徑存儲在數據庫中。要下載文件,我創建了一個download.php,其中應列出上傳的文件。我遇到的問題是下載頁面無法正常工作,沒有顯示文件,並且顯示路徑不會被定義。php - 使用mysql下載文件

index.php文件:

<?php 
include('db.php');  
$sql = "SELECT * FROM documents"; 
$res = mysqli_query($con, $sql);  
?> 

<html> 
    <head> 
     <title>Documents</title> 
    </head> 
<body> 
    <nav id="nav"> 
     <ul> 
      <li><a href="upload.php">Upload</a></li> 
      <li><a href="download.php">Download</a></li> 
     </ul> 
    </nav> 

     <?php    
     while ($row = mysqli_fetch_array($res)) { 

      $name = $row ['name']; 
      $path = $row ['path'];        
     }  
     ?> 
</body> 
</html> 

upload.php的文件:

<?php 
include("db.php"); 

if(isset($_POST['submit'])){ 

    $name = $_FILES['myfile']['name']; 
    $tmp_name = $_FILES['myfile']['tmp_name']; 

    if($name){ 

     $location = "/storage/ssd1/139/2476139/uploads/$name"; 
     move_uploaded_file($tmp_name, $location); 
     $query = mysqli_query($con, "INSERT INTO documents (name, path) VALUES('$name', '$location')"); 
     header('Location: index.php'); 
    } 
    else 
     die("Please select a file.");  
} 
?> 

<html> 
<head> 
    <title>Upload File</title> 
</head> 
<body> 
    <form action="upload.php" method="post" enctype="multipart/form-data"> 
     <label>Browse File:</label> 

     <input type="file" name="myfile"> 
     <input type="submit" name="submit" value="Upload" onclick="index.php"> 
    </form> 

</body>  
</html> 

的download.php文件:

<?php  
include('db.php'); 

echo $name."<a href='download.php?dow=$path'>Download</a><br>"; 

if(isset($_GET['dow'])) { 
    $path = $_GET['dow']; 
    $res = mysqli_query($con, "SELECT * FROM documents WHERE path='$path'"); 

    readfile($path); 
} 
?> 
+2

您正在嘗試在定義它之前使用'$ path'變量。 – David

+0

當我將echo部分放入if語句時,我可以避免它嗎? –

+0

你確定'$ path'不是空的或者存儲真正的路徑嗎? – aidinMC

回答

0

你不能把回聲線,版畫下載鏈接,放入用於下載文件的腳本中。用戶如何才能訪問此頁面?

相反,把你下載鏈接在你的主頁,你已經打印的文檔是這樣的:

<?php    
while ($row = mysqli_fetch_array($res)) { 
    $name = $row ['name']; 
    $path = $row ['path']; 

    echo '<a href="download.php?dow='.$path.'">'.$name.'</a>';       
} 
?> 

那麼你的download.php腳本將通過$_GET['dow'];變量獲取路徑,你可以用它,就像你已經做的那樣,在你的download.php腳本中。