Einzelnen Beitrag anzeigen
  #1  
Alt 10.06.2014, 20:58:41
Gredl Gredl ist offline
Anfänger
 
Registriert seit: Jun 2014
Alter: 30
Beiträge: 0
Upload, Download von Dateien

Hallo zusammen,

ich habe ein Upload-Skript geschrieben, das mir Daten aus dem Upload direkt in eine Datenbank Tabelle einträgt, mein Quellcode sieht hierfür so aus:

PHP-Code:
<?php 

if($_GET['action'] == "upload"


    
// Auf Fehler überprüfen 
    
if ($_FILES['datei']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei']['error'] == UPLOAD_ERR_PARTIAL
    { 
        
// die Datei wurde nicht oder nur teilweise hochgeladen 
        
die("Die Datei wurde nicht korrekt hochgeladen. Bitte versuchen Sie es erneut."); 

    } 
    elseif (
$_FILES['datei']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei']['error'] == UPLOAD_ERR_INI_SIZE
    { 
        
// die Datei ist zu groß 
        
die("Die hochgeladene Datei ist zu groß."); 
    } 
    else 
    {  

        
// Verbindung zur Datenbank
        
$db_host="localhost";
        
$db_name="upload";
        
$db_user="root";
        
$db_pw="";
        function 
opendb() 
        {
            global 
$db_host;
            global 
$db_user;
            global 
$db_pw;
            global 
$db_name;
            
$verbindung mysql_pconnect($db_host,$db_user,$db_pw);
            if(
$verbindung
            {
                if(!(
mysql_select_db($db_name,$verbindung))) 
                {
                    
$verbindung FALSE;
                    echo 
"Keine Verbindung moeglich!";
                }
                return 
$verbindung;
            }
        }    


        
// MySQL Verbindung öffnen
        
$db opendb();

        
// Die Datei in den Zeilordner kopieren
        
$datei_name=$_FILES['datei']['name'];
        
$pfad="upload\\";
        
move_uploaded_file($_FILES['datei']['tmp_name'],"".$pfad.$datei_name); 

        
// Groeße einlesen 
        
$size $_FILES['datei']['size']; 

        
// Leerzeichen im Dateinamen werden mit einem Unterstrich ersetzt 
        //$dateiname = str_replace(" ", "_", $_FILES['datei']['name']); 

        // Und ab in die mySQL Tabelle... 
        
$sql "INSERT INTO files VALUES('', '".stripslashes($pfad)."', '".$datei_name."', '".$_FILES['datei']['type']."', '".$size."', '','','')"
        echo 
$sql;
        
mysql_query($sql,$db); 

        echo 
"Datei-Upload erfolgreich."
        exit;
    }

else 

    
// Upload-Formular anzeigen 
    
echo "<form method=\"post\" action=\"" $PHP_SELF "?action=upload\" enctype=\"multipart/form-data\"> 
    <input type=\"hidden\" name=\"MAX_FILES_SIZE\" value=\"2097152\"> 
    <input type=\"file\" name=\"datei\" maxlength=\"2097152\"><br> 
    <input type=\"submit\" name=\"submit\" value=\"Uploaden\"> 
    </form>"

}


?>
Jetzt würde ich diese Datei gerne wieder herunterladen können, aber das will einfach nicht klappen. Mein Quellcode für den Download sieht derzeit so aus:

PHP-Code:
<?php 
// Datei herunterladen
// Datenbankverbindung
mysql_connect("localhost""root"""); 
mysql_select_db("upload"); 
 
// Es wurde keine Datei ausgewählt -> alle Möglichkeiten anzeigen 
$sql "SELECT file_id, file_upload_folder, filename FROM files"
//echo $sql;
$result mysql_query($sql);
 
var_dump($_SERVER['HTTP_HOST']);

while (
$row mysql_fetch_object($result)) { 
//echo "<a href=\"".$PHP_SELF."?file_id=".$row->file_id."\">".$row->filename."</a><br>"; 
echo "<a href=\"".$_SERVER['HTTP_HOST']."\\".$row->file_upload_folder."\\".$row->filename."\">".$row->filename."</a><br>";


 

?>
Leider sieht man schon, dass auch der falsche Link verwendet wird, um die Datei runterzuladen, aber ich bekomme die Lösung einfach nicht hin
Die Uploads liegen unter: C:\xampp\htdocs\DBProjekt\upload

Kann mir hier jemand weiterhelfen?
Mit Zitat antworten