Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Dateiuebergabe an PHP-Script fuer Upload in MySQL-DB

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Dateiuebergabe an PHP-Script fuer Upload in MySQL-DB

    Halloechen,

    hab' mir nun einen kleinen File-Upload realisiert.
    In einem Formular kann eine Datei ausgewahlt werden, die irgendwo auf dem heimischen PC schlummert (z.B. C:/test.txt). Im naechsten Schritt wird dieser Dateiname inkl Pfadangabe an das dann folgende PHP-Script uebergeben.

    Nun das kleine Problemchen:
    Wenn das Script auf dem Server ausgefuehrt wird, dann weiss der Server natuerlich nicht, wo C:/test.txt ist und macht dann natuerlich nichts, weil er die Datei nicht findet. Wie kann ich oder kann ich die komplette Datei uebergeben?

    Das Script fuehrt die while-Schleife natuerlich gar nicht aus, weil fgets() nix liefert.

    Vielen Dank fuer jeglichen Feedback.


    PHP-Code:
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Upload results!</title>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
     
    </head>
    <body>
     
    <form method="post" >
      <p>Choose a file:<br />
        <input name="Datei" type="file" size="80" maxlength="100000" accept="txt">
      </p>
        <input type="Submit" value="Click to upload!" name="Res_Filter">
    </form>
     
    <?php
    if(($_SERVER['REQUEST_METHOD'] == 'POST') and (isset($_POST['Datei'])) ){
        
    $file $_POST["Datei"];
        if (
    $file==""){
            echo 
    "Please choose file before clicking somewhere, where you shouldn't!<br>";
        }
        else{
            
    //Verbindung aufbauen
            
    $link mysql_connect('localhost''uploader_results''pwd')
                or die(
    'Keine Verbindung möglich: ' mysql_error());
            echo 
    'Database connected<br />';
            
    mysql_select_db('aks_results') or die('Auswahl der Datenbank fehlgeschlagen');
     
            
    //Zeichensatz fuer Verbindung setzen
            
    mysql_query("SET NAMES 'utf8'");
     
     
            
    //Datei oeffnen
            
    echo "This file will be uploaded: ".$file."<br>";
            
    $fp=fopen($file,"r");  //mit TAB als Feldtrenner
            //Datensatzzaehler (DSz) auf 0 setzen
            
    $counter==0;
            echo 
    "...starting upload!<br><br>";
            
    //Datei zeilenweise auslesen und in die Datenbank schreiben
            
    while($line=fgets($fp,1024)) {
            .....
            }

  • Wolla
    antwortet
    Stell dir vor, ein Script könnte wirklich das hier:

    $fd = fopen( "c:/windows/system.ini, "w" );
    fwrite($fd,"dumm gelaufen");
    fclose($fd);

    Die Besucher deiner Seite wären nicht sehr glücklich.

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Zitat von nikosch77-new Beitrag anzeigen
    Jain. Meine Grundhaltung ist immer noch: Ein Forum ist kein Tutorial. Und wer nicht mal eigenen Willen zeigt (das ist jetzt nicht auf Dich zu beziehen) dem mache ich auch nicht die Hausaufgaben. Schließlich und endlich - wer ganz am Anfang steht, von dem erwarte ich, dass er sich zumindest große Mühe gibt, seine Frage oder sein Problem zu schildern.
    Dem schließe ich mich als Moderator voll und ganz an. Vor allem wenn Neulinge ohne jedes Grundlagenwissen ankommen und von uns verlangen alles haarklein zu erläutern und nichtmal den geposteten Links folgen. Bei sowas platzt mir ehrlich gesagt der Kragen und das ist jetzt nicht auf eine bestimmte Person hier bezogen sondern auf die (leider) allgemeine Grundhaltung hier.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Zitat von b_i_g_b_o Beitrag anzeigen
    @nikosch77-new: Ich bin ja echt froh, dass es hier im Forum schnell Hilfe gibt, das hat mir in den letzten Tagen schon sehr geholfen. Danke also auch Dir... Kann es aber eventuell möglich sein, dass Du als Moderator hier im Forum "PHP Einsteiger" vielleicht etwas zuviel bei den Einsteigern voraussetzt?
    Jain. Meine Grundhaltung ist immer noch: Ein Forum ist kein Tutorial. Und wer nicht mal eigenen Willen zeigt (das ist jetzt nicht auf Dich zu beziehen) dem mache ich auch nicht die Hausaufgaben. Schließlich und endlich - wer ganz am Anfang steht, von dem erwarte ich, dass er sich zumindest große Mühe gibt, seine Frage oder sein Problem zu schildern.

    Einen Kommentar schreiben:


  • b_i_g_b_o
    antwortet
    ...funktioniert nun.

    Einen Kommentar schreiben:


  • b_i_g_b_o
    antwortet
    ...na dann geh' ich mal auf die Suche.

    @David: Danke.

    @nikosch77-new: Ich bin ja echt froh, dass es hier im Forum schnell Hilfe gibt, das hat mir in den letzten Tagen schon sehr geholfen. Danke also auch Dir... Kann es aber eventuell möglich sein, dass Du als Moderator hier im Forum "PHP Einsteiger" vielleicht etwas zuviel bei den Einsteigern voraussetzt?

    Einen Kommentar schreiben:


  • David
    antwortet
    PHP löscht die temporäre Datei selbst vom Server, sobald das Skript beendet wird.
    Ja, die Daten müssen vom Browser zu Server übertragen werden. Weder hat der browser (in der Regel) Zugriff auf den Datenbankserver, noch hat der Datenbank-/Webserver (in der Regel) Zugriff auf das Dateisystem des Clients.

    Einen Kommentar schreiben:


  • b_i_g_b_o
    antwortet
    Nur zur Sicherheit frage ich nochmal nach:

    Ich muss also die Datei zwingend auf den Server hochladen, bevor ich den Inhalt in eine Datenbank schreiben kann?

    Gibt es evtl. auch eine Moeglichkeit, die Datei irgendwo temporaer nur fuer Dauer des Transfers des Inhalts in die DB bereit zu halten?

    ...denn die Datei muesste ich dann eh wieder vom Server loeschen.

    Danke vielmals.

    Einen Kommentar schreiben:


  • David
    antwortet
    Dann musst Du die Datei erstmal auf den (PHP|Web-)Server hochladen.
    PHP: Handling file uploads - Manual

    Einen Kommentar schreiben:


  • b_i_g_b_o
    antwortet
    Hmm, den Inhalt einer Text-Datei, die ich per Formular auswahle, in eine Datenbank schreiben....

    Das klappt auch alles, wenn ich das Script auf meinem PC ausprobiere (auf dem ich Apache, MySQL und PHP installiert habe). Wenn ich das ganze auf den Server schiebe, funktionierts nicht mehr, da das Script nicht mehr in die while-Schleife springt, denn Datei wird nicht gefunden...

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Häh, was genau willst Du? Schau Dir besser erstmal ein Tutorial zum File Upload an, damit Du erstmal das Grundprinzip verstehst.

    Einen Kommentar schreiben:

Lädt...
X