2013-03-22 6 views
0

좋아, 내 데이터베이스에 업로드 파일이 괜찮아. 그러나 데이터베이스에서 파일을 다운로드하는 데 문제가 있으면 링크로 표시되고 링크를 클릭해도 아무 일도 일어나지 않습니다.MYSQL 데이터베이스의 파일을 다운로드

메신저 여전히 PHP에 익숙하지 않으므로 내 코드가 완벽하지 않습니다.

는 여기에 내가 철저하게 코드를 스캔하고 여기에 최종 답변 내 업로드 파일

<?php 

    require 'connect.php'; 
?> 
<form method="post" enctype="multipart/form-data"> 
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box"> 
<tr> 
<td width="246"> 
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"> 
<input name="userfile" type="file" id="userfile"> 
</td> 
<td width="80"><input name="upload" type="submit" class="box" id="upload" value="           
</tr> 
    </table> 
    </form> 


<?php 
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
{ 
$fileName = $_FILES['userfile']['name']; 
$tmpName = $_FILES['userfile']['tmp_name']; 
$fileType = $_FILES['userfile']['type']; 
$fileSize = $_FILES['userfile']['size']; 
$fp  = fopen($tmpName, 'r'); 
$content = fread($fp, filesize($tmpName)); 
$content = addslashes($content); 
fclose($fp); 
if(!get_magic_quotes_gpc()) 
{ 
$fileName = addslashes($fileName); 
} 
$query = "INSERT INTO upload (name, type, size, content) ". 
"VALUES ('$fileName', '$fileType', '$fileSize', '$content')"; 
mysql_query($query) or die('Error, query failed'); 
echo "<br>File $fileName uploaded<br>"; 
} 
?> 



Here is my download 


<?php 
require 'connect.php'; 

    $query = "SELECT id, name FROM upload"; 
    $result = mysql_query($query) or die('Error, query failed'); 
    if(mysql_num_rows($result) == 0) 
    { 
    echo "Database is empty <br>"; 
    } 
    else 
    { 
    while(list($id, $name) = mysql_fetch_array($result)) 
    { 
    ?> 
    <a href="download.php?id=<?php echo urlencode($id);?>"><?php echo urlencode($name);? ></a> <br> 
    <?php 
    } 
    } 
    exit; 
    mysql_close() 
    ?> 
    <?php 
    require 'connect.php'; 
    $query = "SELECT id, name FROM upload"; 
    if(isset($_GET['id'])) 
    { 

    $id = $_GET['id']; 
    $query = "SELECT name, type, size, content " . 
    "FROM upload WHERE id = '$id'"; 
    $result = mysql_query($query) or die('Error, query failed'); 
    list($name, $type, $size, $content) = mysql_fetch_array($result); 
    $content = $row['content']; 
    header("Content-Disposition: attachment; filename=\"$filename\""); 
    header("Content-type: $type"); 
    header("Content-length: $size"); 
    exit; 
    print $content; 
    ob_clean(); 
    flush(); 
    echo $content; 
    } 
    ?> 
+1

일반적으로 db에 파일을 저장하지 않는 것이 좋습니다. –

답변

1

입니다. 당신의 download.php 당신이 만드는 링크 및 exit에서

<?php 
    require 'connect.php'; 

    $query = "SELECT id, name FROM upload"; 
    $result = mysql_query($query) or die('Error, query failed'); 

    if(mysql_num_rows($result)==0){ 
     echo "Database is empty <br>"; 
    } 
    else{ 
     while(list($id, $name) = mysql_fetch_array($result)){ 
      echo "<a href=\"download.php?id=\$id\">$name</a><br>"; 
     } 
    } 

    if(isset($_GET['id'])){ 
     $id = $_GET['id']; 
     $query = "SELECT name, type, size, content FROM upload WHERE id = '$id'";  
     $result = mysql_query($query) or die('Error, query failed'); 
     list($name, $type, $size, $content) = mysql_fetch_row($result); 
     header("Content-Disposition: attachment; filename=\"$name\""); 
     header("Content-type: $type"); 
     header("Content-length: $size"); 
     print $content; 
    } 
?> 
0

. 즉, exit 전화보다 더 멀리 가지 않을 것입니다.

<?php 
    } 
    } 
    exit; 
    mysql_close() 
?> 

다운로드 파일에서 논리를 다시 생각해보아야합니다. 전화 번호

header("Content-length: $size"); 
exit; 
print $content; 
관련 문제