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)) {
            .....
            }

  • #2
    Häh, was genau willst Du? Schau Dir besser erstmal ein Tutorial zum File Upload an, damit Du erstmal das Grundprinzip verstehst.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      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...

      Kommentar


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

        Kommentar


        • #5
          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.

          Kommentar


          • #6
            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.

            Kommentar


            • #7
              ...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?

              Kommentar


              • #8
                ...funktioniert nun.

                Kommentar


                • #9
                  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.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    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.

                    Kommentar


                    • #11
                      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.
                      [PHP]if ($var != 0) {
                      $var = 0;
                      }[/PHP]

                      Kommentar

                      Lädt...
                      X