2015-05-03 2 views
0

Я работаю на веб-сайте, где я хочу загрузить и загрузить данные с сервера. Загрузка работает нормально, но я не могу загрузить данные. У меня есть таблица с именем upload с колонками: uplaod_name, sub_name, semester_id, date и file_content. Вот форма, из которой я скачиваю данные:Как загрузить файл из базы данных MySQL

<?php 

include_once("functions.php"); 
$query="SELECT * from uploads"; 
$rs = execute_query($query); 

?> 
<form action="s_downfinl.php" method="post" enctype="multipart/form-data"> 
<table border="groove" cellpadding="15px"> 
<tr> 
<td>Subject Name</td> 
<td>upload name</td> 
<td>Download</td> 
</tr> 
<?php 
while ($row = mysql_fetch_assoc($rs)){ 
echo "<tr><td>"; 
//echo "<pre>"; 
//print_r($row); 
//echo "</pre>"; 
echo $row['sub_name']."</td><td>"; 
echo $row['upload_name']."</td>"; 
echo "<td><a href='s_downfinl.php?nama=". $row['file_content']."'>download</a></td>"; 
} 

echo "</table>"; 
?> 
</form> 

и файл s_downfinl.php для загрузки файла:

<?php 
include_once("functions.php"); 

$query = "SELECT * FROM uploads WHERE sub_name = $sub_name"; 
$name= $_POST['nama']; 
download($name); 
$rs = execute_query($query); 

function download($name){ 
$file = $nama_fail; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
} 
} 
?> 
+0

Я смущен, почему вы храните содержимое файла в БД, а не просто загружаете файл на сервер и сохраняете путь к файлу в БД. Не могли бы вы рассказать о том, что такое содержимое файла и какой конечный результат вы хотите? – danbahrami

+0

Я работаю над учебным типом веб-сайта, где преподаватели будут загружать файлы, такие как лекции ppt, pdf и word docs, а учащиеся будут входить в систему и загружать их сами. его проект моего семестра фактически – motan

+0

В этом случае я бы посоветовал вам просто загрузить файлы в какой-либо каталог на вашем сервере, и для каждой строки в вашей БД сохраните 'file_path' вместо' file_contents'. Затем вы можете просто предоставить ссылку для загрузки в путь к файлу. – danbahrami

ответ

1

Во-первых, переменная $sub_name в вашем where пункте WHERE sub_name = $sub_name - если это a string (, который у меня под впечатлением), его нужно указывать WHERE sub_name = '$sub_name'. Использование or die(mysql_error()) до mysql_query() должно/должно вызывать синтаксическую ошибку.

На данный момент он не уверен, где и как определяется эта переменная.

Плюс это $_POST['nama'], который должен быть GET согласно s_downfinl.php?nama.

Проверка ошибок при использовании отчетов об ошибках при тестировании.

Добавьте error reporting в начало файла, в котором будут найдены ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

Sidenote: Сообщения об ошибках не должно быть сделано только в постановке, и никогда производства.

Также используйте для этого запроса mysql_error, чтобы узнать, не сработал ли ваш запрос.


Сноски:

  • $nama_fail не определен согласно Опубликованная кода, поэтому вам, возможно, потребуется уточнить, что, то же самое для $sub_name.

Посмотрите эти примеры на загрузку файлов из базы данных.

Они могут дать вам идеи/помощь.

Смежные вопросы