Bestand downloaden van database
Ik zit met een probleem wat lokaal wel goed gaat en helaas online niet, het downloaden van een bestand het uploaden gaat prima. Zal eerst de tabel structuur even laten zien:
------------------------------------------------------------------
TABEL UPLOAD:
NAME: TYPE: NULL Extra
U_ID int(8) No AUTO_INCREMENT
name varchar(255) No -
size int(8) No -
type int(255) No -
content blob No -
-------------------------------------------------------------------
De script voor het ophalen van de bijlage (voorbeeld.php):
<td>Bijlage:</td>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$query = "SELECT U_ID, name FROM upload WHERE U_ID = '$opvraag[U_ID]'";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
echo "<td>Geen Bijlage</td>";
}
else
{
while(list($id, $name) = mysql_fetch_array($result))
{
echo '<td><a href="download.php?id='.$opvraag['U_ID'].'">'.$name.'</a></td>';
}
}
?>
$query = "SELECT U_ID, name FROM upload WHERE U_ID = '$opvraag[U_ID]'";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
echo "<td>Geen Bijlage</td>";
}
else
{
while(list($id, $name) = mysql_fetch_array($result))
{
echo '<td><a href="download.php?id='.$opvraag['U_ID'].'">'.$name.'</a></td>';
}
}
?>
Hier het script download.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if(isset($_GET['id']))
{
$id = $_GET['id'];
$query = "SELECT name, type, size, content " .
"FROM upload WHERE U_ID = '$id'";
$result = mysql_query($query) or die('Fout, query mislukt');
list($name, $type, $size, $content) = mysql_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;
exit;
}
?>
if(isset($_GET['id']))
{
$id = $_GET['id'];
$query = "SELECT name, type, size, content " .
"FROM upload WHERE U_ID = '$id'";
$result = mysql_query($query) or die('Fout, query mislukt');
list($name, $type, $size, $content) = mysql_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;
exit;
}
?>
Wat het script bij voorbeeld.php doet als ik op de bijlage klik is het openen in download.php, in plaats van het bestand te downloaden. Lokaal kon je het bestand gewoon downloaden en opende hij de pagina download.php helemaal niet.
Groet,
Dean
Lijkt mij logisch dat ie download.php opent.
Waarom trouwens een heel bestand in de database?
Tweede script is lek => sql-injection.
Waarom opent die lokaal niet download.php maar download hij het bestand ook?