Quicks: Upload abwarten ! Wie ?

Hidiho leute

Ich hab mal wieder eine frage zum Dateiupload mit PHP

Also ich hab es endlich hingebracht dass der mir die datei die ich per input type=file auswähle uploadet. *jubel* ;)

so weit so gut

ich möchte jetzt folgendes bewerkstelligen.

klick auf senden-button läd ein php script.
in diesem script soll ein meta-refresh befehl stehen, der dann ausgeführt wird, wenn der upload vollständig ist.

wie kann ich das erreichen ?
habe nirgends eine funktion ifUploadComplete() oder so :) gefunden.

Kann mir da bitte wer helfen ?

vielen dank schonmal

  1. Am besten noch alle 2 secunden das php script refreshen und die aktuelle %-Zahl des Uploads anzeigen, gibt es dafür vielleicht eine funktion die den uuploadstatus beinhaltet ?
    *größenwahnsinnig werd :o)*

    aber das ist nur nebensächlich

    dange
    Quicks

  2. Hallo

    klick auf senden-button läd ein php script.
    in diesem script soll ein meta-refresh befehl stehen, der dann ausgeführt wird, wenn der upload vollständig ist.

    Das php-Script wird erst aufgerufen, wenn der Upload komplett ist. Somit brauchst du nicht warten, sondern kannst einfach mit der upgeloadeten Datei arbeiten.

    Michael

    1. Das php-Script wird erst aufgerufen, wenn der Upload komplett ist. Somit brauchst du nicht warten, sondern kannst einfach mit der upgeloadeten Datei arbeiten.

      hmm

      das verstehe ich nicht ganz :o(
      ich kopier dir mal den source rein, vielleicht kannst mir da sagen was ich falsch mache

      ---------------------
      <form name=form action="site.php" method=post submit="return false">
        <input type=file name=File>
        <input type=button name=Add value=Add onclick="document.form.submit();return false">
      </form>
      ---------------------

      ich wähle nun die datei aus, und klicke auf Add.
      Dann wird die datei site.php geladen.
      In dieser Datei steht dann:

      ---------------------
      <?php
        copy($File,$File_name)
      ?>
      ---------------------

      so
      und mein ziel ist es dass die site.php so aus sieht:

      ---------------------
      <?php
        copy($File,$File_name)

      if ( File koplett upgeloadet ist )
          {
            printf("meta http-equiv="refresh" content="0;URL=site2.php">");
          }
      ?>
      ---------------------

      und das krieg ich einfach net hin :o(((

      1. onclick="document.form.submit();return false">

        Warum nicht
        <input type="submit" name="Add" value="Add">
        das funktioniert auch ohne Java

        <?php
          copy($File,$File_name)

        if ( File koplett upgeloadet ist )
            {
              printf("meta http-equiv="refresh" content="0;URL=site2.php">");
            }
        ?>

        das if() ist komplett überflüssig, weil site.php erst aufgerufen ist, wenn die Datei komplett übertragen wurde. Somit kann site.php so aussehn:

        <?php
          copy($File,$File_name);
          header( "Location: site2.php" );

        //  printf("meta http-equiv="refresh" content="0;URL=site2.php">");
        ?>

        statt dem printf besser den header verwenden.
        hoffe, das hat jetzt besser geholfen.

        lg,
        Michael

        1. ahh

          jetzt hab ichs gecheckt
          vielen dank ;)

          aber was wenn der Up fehl schlägt ?

          1. aber was wenn der Up fehl schlägt ?

            gute Frage,

            ich kenn mich mit dem Protokoll nicht aus, aber ich nehme an (in Grossbuchstaben: "NEHME AN"), dass dann auch das script gar nicht aufgerufen wird, und der Client eine Fehlermeldung bringt. Könnte sogar eine 404 sein.

            <reine spekulation>
            Client schickt Datei, Formularfelder _und_ Request für site.php alles auf einmal weg über eine Connection und Wartet mal.
            Server empfängt alle Daten, schön der Reihe nach, auch den GET Request für site.php und schickt dem Client regelmässig ein "ok, ich weiss da kommt was, wart mal, bis ich alles hab" Signal, damit der nicht einen Timeout bekommt - oder so.
            Und wenn alles da ist, ruft er site.php auf.
            Wenn nicht alles ankommt, schickt der Server ein Error, stürzt der Server währenddessen ab, kann er sowieso nix mehr aufrufen.
            </reine spekulation>