File Script!

doch, du kansnt das file hochladen, den pfad, einen namen für das file und noch seinen MIME-Type (was das ist siehe selfhtml.teamone.de) speichern.
Wenn der user jetzt das fileh aben will, wählt er es aus einer lsite aus, die aus den oben erzeugten Datenbankeiträgen generiert wird.
Soweit so gut. Hinter jedem Link steckt dann die ID oder was auch immer den Datensatz eindeutig kennzeichnet. Damit kannst du dann den Pfad zur Datei auslesen und ihn wie folgt ausgeben:

PHP:
header("HTTP/1.1 200 OK"); 
header("Content-type: ".$mimetype); 
header("Content-Disposition: attachment; filename=\"".basename($file)."\"");  
readfile($file);
exit;

In der Variable $mimetype steht der erwähnte MIME-Type der Datei drin, in $file der Pfad zur Datei.

HTH
Ben
 
Hmm irgentwie schaffe ich das ned:

PHP:
<?php
// Verbindung mit der Datenbank erstellen //
$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db ($db_name) or die ("Cannot connect to database");

$query = "SELECT * FROM $tabellefiles order by id";
$result = mysql_query($query);
while($r=mysql_fetch_array($result))
{
$name=$r["name"];
$link=$r["link"];
$beschreibung=$r["beschreibung"];

echo "<div align=center>
  <table width=551 border=0 cellpadding='0' cellspacing=0>
    <tr>
      <td width=104>$name</td>
      <td width=252>$beschreibung</td>
      <td width=35><div align=center><a href=$link>click</a></div></td>
    </tr>
  </table>
</div>";
}
?>

$link ist der link zum File ^^!
 
Angenommen das File liegt auf "download/file.zip"
Nun Links du anstatt auf "download/file.zip" auf folgendes:
PHP:
echo "<a href=\"download.php?id=".$downloadid.">Link</a>";
Die download.php enthält folgenden Code:
PHP:
<?php
    @mysql_connect(...);
    @mysql_select_db(...);
    $result = mysql_query("SELECT * FROM Downloads WHERE ID = '".addslashes($_GET['id'])."'") OR die(mysql_error());
    $row = mysql_fetch_assoc($result);
    $file = $row['file'];
    $name = $row['filename'];
    if(file_exists($file)) {
        $size = filesize($file);
        header("Content-type: application/octet-stream");
        header("Content-disposition: attachment; filename=".$name);
        header("Content-Length: ".$size);
        header("Pragma: no-cache");
        header("Expires: 0");
        readfile($file);
    }
    else {
        echo "Dieser Download existiert nicht!";
    }
?>
Die Tabelle zu diesem "Downloadsystem" sieht so aus:
Code:
ID | file | filename

ID = Primärschlüssel
file = Pfad des Files (z.B. "download/file.zip")
filename = Name unter dem das File gespeichert werden soll (z.B. "programm.zip")

mfg
split
 
wenn die ID auf jeden Fall nur eine Zahl ist würde ich statt dem addslashes das $_GET - Element zu int casten:

PHP:
$result = mysql_query("SELECT * FROM Downloads WHERE ID = '".( (int) $_GET['id'] )."'") OR die(mysql_error());
 
Zurück