joM: MPG und PDF file upload ? welche methoden

hallo,

Ich habe schon fileuploads mit jpg's gemacht (move_uploaded_file).

kann mir jemand sagen welcher funktionen ich mich bedienen muß,
wenn ich pdf's oder mpg's uploaden will.

mach ich das auch mit move_uploaded_file oder muß ich andere funktionen benutzten.

welche sind die anderen funktionen ??

danke

  1. Moin!

    Ich habe schon fileuploads mit jpg's gemacht (move_uploaded_file).

    kann mir jemand sagen welcher funktionen ich mich bedienen muß,
    wenn ich pdf's oder mpg's uploaden will.

    mach ich das auch mit move_uploaded_file oder muß ich andere funktionen benutzten.

    Die Funktion heißt ja nicht move_uploaded_jpg, oder?

    - Sven Rautenberg

  2. Hello,

    Ich habe schon fileuploads mit jpg's gemacht (move_uploaded_file).

    kann mir jemand sagen welcher funktionen ich mich bedienen muß,
    wenn ich pdf's oder mpg's uploaden will.

    mach ich das auch mit move_uploaded_file oder muß ich andere funktionen benutzten.

    Sollte Dein PHP schon neu genug sein, dann verwende auf jeden Fall die Funktion
    mime_content_type()  http://de3.php.net/mime_content_type

    Und schau Dir mal an, was
    getimagesize() http://de3.php.net/manual/en/function.getimagesize.php
    (englische Manualversion!)
    noch an Informationen liefert.

    Dann bau Dir eine Definitionsdatei, in der Du festlegst,

    • welche Dateitypen Du annimmst
    • in welche Directories diese Dateien gehören
    • werd diese Dateien nachher aufrufen darf

    Sonst kannst Du Dir leicht Scripte oder Executables einfangen, die Du bestimmt nicht haben willlst.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hello,

      damit es nicht missverstanden wird:

      Zur Verschiebung der Datei aus dem Upload_temp_dir ins Speicherverzeichnis sind natürlich weiterhin move_uploaded_file() oder copy() zu verwenden, aber eben erst nach der von mir angesprochenen Kontrolle der Dateien.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Meine Datei sieht momentan so aus:

        Was stimmt noch nicht an meinem script, WIE bekomme ich nun mein MPG file in einen bestimmeten ordner geladen???

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <title>fileupload</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        </head>
        <body bgcolor="#FFFFFF" text="#000000">
        <?

        $uploadPath="";
        $mimiMPG="video/mpeg";
        $mimiPDF="application/pdf ";

        $mpg1File=$_FILES['mpg1']['name'];

        if($mpg1File!="")
         {
         $type=mime_content_type($_FILES['mpg1']['tmp_name']);

        if($type==$mimiMPG)
          {
          if(move_uploaded_file)
           {
           print "upok";
           }
          }
         }
         else{print "doc leer";}
        ?>
        <form name="form1" method="post" action="?" enctype="multipart/form-data">
        <input type="file" name="mpg1">
        <input type="submit" value="up" name="submit">
        </form>
        </body>
        </html>

        1. Moin!

          Was stimmt noch nicht an meinem script, WIE bekomme ich nun mein MPG file in einen bestimmeten ordner geladen???

          if(move_uploaded_file)

          Hier muß mehr stehen. Quelldatei, Zieldatei,... halt alles, was zum Bewegen einer Datei notwendig ist.

          - Sven Rautenberg

          1. hallo,

            ich hatte das schon geändert, erhalte aber trotzdem eine fehlermeldung:

            if(move_uploaded_file($_FILES['mpg1']['tmp_name'],$path))
            {
            print "upok";
            }
            else(print "ERROR";)

            kann der uploadpfad relativ sein??? oder was mache ich noch falsch??

            1. hi,

              ich hatte das schon geändert, erhalte aber trotzdem eine fehlermeldung:

              if(move_uploaded_file($_FILES['mpg1']['tmp_name'],$path))
              [...]
              kann der uploadpfad relativ sein???

              ich denke, du hast mit der gleichen methode schon einen dateiupload für jpegs realisiert?

              dann dürfte sich doch diese frage jetzt eigentlich gar nicht mehr stellen!

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
              1. hi,

                das problem hat sich erledigt.

                danke

                1. Hello,

                  das problem hat sich erledigt.

                  Und erzählst Du uns bitte auch, durch welche Maßnahme? Das gehört hier irgendwie dazu ;-)

                  Harzliche Grüße aus http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  1. Also das problem lag bei move_uploaded_file()
                    Ich hatte dort beim ersten argument den bildnamen angegeben $_FILES['mpg1']['name'],
                    anstatt die temporäre datei $_FILES['mpg1']['tmp_name']

                    so sieht mein fertiger MPG uploader nun aus:
                    es folgt natürlich noch das eintragen in eine MYSQL datenbank

                    ================================

                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                    <html>
                    <head>
                    <title>fileupload</title>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                    </head>
                    <body bgcolor="#FFFFFF" text="#000000">
                    <?

                    $uploadPathMPG="mpg/";
                    $mimeMPG="video/mpeg";
                    $mpg1File=$_FILES['mpg1']['name'];
                    //-------------------------------------------------------------->MPG upload
                    if($mpg1File!="")
                     {
                     $type=mime_content_type($_FILES['mpg1']['tmp_name']);
                     $time=microtime();
                     $time=strrev($time);
                     $time=substr($time,0,9);
                     $rand=rand(0,1000);
                     $mpg1File=$rand."_".$time.".mpg";

                    if($type==$mimeMPG)
                      {
                      if(move_uploaded_file($_FILES['mpg1']['tmp_name'] , $uploadPathMPG.$mpg1File))
                      {
                       print "MPG succeful uploaded<br>";
                       print $mpg1File;
                       $mpgSizeKB=(int) (filesize($uploadPathMPG.$mpg1File)/1024);
                       }
                      else{print "UPLOAD ERROR !!!";}
                      }
                     else{print "This is not a valid MPG File";}
                     }
                     else{print "choose a doc";}
                    //=============================================

                    ?>
                    <form name="form1" method="post" action="" enctype="multipart/form-data">
                    <table width="100%" border="0" cellpadding="0" cellspacing="10" bgcolor="00cccc">
                     <tr>
                      <td>MPG - <input type="file" name="mpg1">&nbsp;&nbsp;<input type="submit" value="up" name="submit"></td>
                     </tr>
                    </table>
                    </form>
                    </body>
                    </html>

                    1. Hello,

                      if($mpg1File!="")

                      it is still wrong.
                      You must not  use $_FILES[$inputfieldname]['name'] to check the upload success but youu should use $_FILES[$inputfieldname]['error']. PHP itself takes care of a proper upload.

                      Perhaps you don't understand german, so i'll try to talk english to you...

                      Harzliche Grüße aus http://www.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau
            2. Hello,

              $_FILES['mpg1']['tmp_name'] enthält den absoluten Pfad auf die temporäre Datei
                $path                       ist relativ zum Ort des Scriptes

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
        2. Hello,

          Meine Datei sieht momentan so aus:

          Was stimmt noch nicht an meinem script, WIE bekomme ich nun mein MPG file in einen bestimmeten ordner geladen???

          Du hast, so scheint es, meine Verweise nicht durchgearbeiet.

          $uploadPath="";

          Der upload-Path wird in der php.ini oder in den VirtHosts eingestellt.
          Genaueres dazu siehe http://de3.php.net/manual/en/function.ini-set.php
          Er ist also i.d.R. vom Provider vorgegeben. Es handelt sich dabei um das Temporärverzeichnis.
          Man muss ihn nicht wissen, da in $_FILES[$inputfeldname]['tmp_name'][0]   *1)

          Lies Dir bitte auch http://de2.php.net/features.file-upload durch.

          $mimiMPG="video/mpeg";
          $mimiPDF="application/pdf ";  <--+

          +-- Das Leerzeichen würde stören

          Hier wäre ein Array angebracht

          $_allowedMIME[] = 'video/mpeg';
          $_allowedMIME[] = 'application/pdf';

          $mpg1File=$_FILES['mpg1']['name'];

          Das Name der Datei kann vom Client beliebig gesetzt werden.
          Man sollte ihn immer auf seinen basename()-Anteil reduzieren
          http://de2.php.net/manual/en/function.basename.php

          if($mpg1File!="")

          Ob das Feld leer ist, ist unerheblich. Das wäre auch möglich, wenn eine Datei hochgeladen wurde. Dann müsste eben beim Verschieben auf dem Server ein Name ausgewürfelt werden. Empfehlenswert ist da

          $savename = "$user.".date('YmdHis').".$ext";

          Wobei $user aus der Anmeldung des Users ermittelt wird und $ext mittels der mime_content_type() und /oder getimagesize() Funktion un einem eigenen Übersetzungs-Array.

          {
           $type=mime_content_type($_FILES['mpg1']['tmp_name']);

          if($type==$mimiMPG)

          If (in_array($type,$_allowedMIME))

          {
            if(move_uploaded_file)
             {

          $saveok = move_uploaded_file($_FILES[$feldname]['tmp_name'],$pictureSavePath.'/'.$savename);

          print "upok";

          echo  "<p class="message">".(($saveok)?'Upload erfolgreich abgeschlossen':'Leider trat ein Fehler auf')."</p>\n";

          }
            }
           }
           else{print "doc leer";}
          ?>
          <form name="form1" method="post" action="?" enctype="multipart/form-data">
          <input type="file" name="mpg1">
          <input type="submit" value="up" name="submit">
          </form>
          </body>
          </html>

          Du hast leider das Feld $_FILES[$feldname]['error'][0]   *1) nicht berücksichtigt.

          Das solltest Du als erstes tun, dann die Größe der Datei anschauen, ob sie größer 0 ist, denn was wollst Du leere Dateien bewwegen?
          Und dann schaust Du dir den Mime-Type an und prüfst, ob du ihn annehmen willst und wohin die Datei gehört ($pictureSavePath setzen) und dann schaust Du Dir den namen der Datei an und baust daraus den $savename.

          Erst _dann_ führst Du die Verschiebung durch.

          *1) Der index wird nur bei Multiuploads angelegt

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
  3. hi,

    Ich habe schon fileuploads mit jpg's gemacht (move_uploaded_file).

    kann mir jemand sagen welcher funktionen ich mich bedienen muß,
    wenn ich pdf's oder mpg's uploaden will.

    hinweise zum "moven" und prüfen hast du ja bereits bekommen.

    ein weiterer hinweis von mir:

    JPEGs sind in der regel ziemlich klein, aber bei PDFs und gar MPEGs kann das natürlich schon sehr leicht andere größenordnungen erreichen - da musst du also aufpassen, dass du nicht mit den am server/für PHP eingestellten limits für die upload-größe kollidierst ...

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hello,

      ein weiterer hinweis von mir:

      JPEGs sind in der regel ziemlich klein, aber bei PDFs und gar MPEGs kann das natürlich schon sehr leicht andere größenordnungen erreichen - da musst du also aufpassen, dass du nicht mit den am server/für PHP eingestellten limits für die upload-größe kollidierst ...

      und noch einer von mir:
      Auch die max_input_time ist wichtig, anders als meistens vermutet. Die max_execution_time des Scriptes fängt nämlich erst nach erfolgreichem Input an zu laufen. Die max_input_time ist dann also dafür verantwortlich, wenn bei einer langsamen Übertragungsstrecke das File nicht vollständig hochgeladen werden kann.

      Bald können wir einen neuen Featureartikel aus dem Thread machen.

      Außerdem gibt es dazu schon eine etwas längere Antwort von mir auf einen älteren Thread, die mit den anderen noch zur Verfügung stehenden Prüfmöglichkeiten mittels $_FILES beschäftigt.

      habe ihn gefunden:
      http://forum.de.selfhtml.org/archiv/2004/9/90629/#m543754

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau