PHP Upload von Fotos und Videos nicht möglich

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
Hallo zusammen,
ich versuche gerade den Upload von Fotos sowie Videos aus einer PHP-WebApp heraus zu ermöglichen.

Den folgenden HTML-Code (u.a.) habe ich verwendet:

HTML:
<form name="formular" action="db.php" enctype="multipart/form-data" method="POST">
  <input type="file" class="btn btn-default" name="bew_mpg" id="bew_mpg">
  <input type="file" class="btn btn-default" name="bew_img" id="bew_img">
  <input type="submit" value="Senden">
</form>

Der folgende PHP-Code verarbeitet denn den Prozess:

PHP:
// Foto-Upload

if ($_FILES['bew_img']['name'] != "") {

	$zdt_img = array("image/png", "image/jpg");

	if (!in_array($_FILES['bew_img']['type'] , $zdt_img)) {
		echo "<p>Der Dateityp ist NICHT zugelassen</p>";

	} else {

		if ($_FILES['bew_img']['name'] != "") {

			$fType = strrchr($_FILES['bew_img']['name'],".");
			$nName = $email.$fType;

			// -------------------------------------------------------------------->
			move_uploaded_file($_FILES['bew_img']['tmp_name'], 'img_bew/'. $nName);
			// -------------------------------------------------------------------->

		} 
	}                   
}


// Video-Upload

if ($_FILES['bew_mpg']['name'] != "") {

	$zdt_mpg = array("video/mpeg", "video/mp4");

	if (!in_array($_FILES['bew_mpg']['type'] , $zdt_mpg)) {
		echo "<p>Der Dateityp ist NICHT zugelassen</p>";

	} else {

		if ($_FILES['bew_mpg']['name'] != "") {

			$fType = strrchr($_FILES['bew_mpg']['name'],".");
			$nName = $email.$fType;

			// -------------------------------------------------------------------->
			move_uploaded_file($_FILES['bew_mpg']['tmp_name'], 'mpg_bew/'. $nName);
			// -------------------------------------------------------------------->

		} 
	}                   
}

Merkwürdig ist: Bei den Fotos funktioniert es. Nur bei den Videos leider nicht.
Hat einer eine Idee, was falsch sein könnte oder findet einer einen Fehler?

VG, David
 
Zuletzt bearbeitet:
Datei zu groß?

Ansonsten müsstest du beschreiben, wie "es funktioniert nicht" genau aussieht.
 
Die Datei ist teilweise kleiner als das Foto, dessen Upload funktioniert.

Das entsprechende Video-File erscheint nicht im Ordner 'mpg_bew.

Eine Fehlermeldung erhalte ich aber nicht.
 
1. Prüf mal ob $_FILES['bew_mpg']['name'] nicht doch initial ist, bzw. packe eine Ausgabe in einen ELSE -> print_r($_FILES['bew_mpg']);
2. überprüfe den MIME-Type lieber über mime_content_type auf dem Server und nicht über POST-Daten ->über den Browser kann ein X-Beliebiger Mime-Type mitgegeben werden.
 
Ich habe jetzt nochmal ein wenig gebastelt.
Das mit der Prüfung des MIME-Typs über den Server werde ich noch Einbinden, danke für den Tipp.

Also, nur auf dem Smartphone funktioniert der Upload nicht. Auf dem Rechner gibt es keine Probleme.
Hat also jetzt nicht mehr viel mit PHP zu tun. Aber vielleicht weiß einer, ob Smartphones solche Video-
Uploads blockieren? Die Testdatei ist <1MB groß. Kann also schonmal nicht an der Größe liegen.

Edit:
Ich habe den entsprechenden Code jetzt mal zum Testen ausgelagert:

HTML:
HTML:
<html>
  <head>
    
  </head>
  
  <body>
    <form name="formular" action="upl.php" enctype="multipart/form-data" method="POST">
      <input type="file" 
             style="padding-left:25px; 
                    padding-top:25px; 
                    margin-left:25px; 
                    margin-top:25px;" 
             maxlength="255" 
             name="bew_mpg" 
             id="bew_mpg"
             size="60"
             >
      <input type="submit" class="btn btn-lg btn-danger" value="Video uebermitteln">
    </form>
  </body>
</html>

PHP:
PHP:
<?php

  // Video-Upload

  if ($_FILES['bew_mpg']['name'] != "") {

    
    $zdt_mpg = array("video/mpeg", "video/mp4");
    

    if (!in_array($_FILES['bew_mpg']['type'] , $zdt_mpg)) {
      echo "<p>Der Dateityp ist NICHT zugelassen</p>";

    } else {

      if ($_FILES['bew_mpg']['name'] != "") {

        $fType = strrchr($_FILES['bew_mpg']['name'],".");
        $nName = "xxx".$fType;

        // -------------------------------------------------------------------->
        move_uploaded_file($_FILES['bew_mpg']['tmp_name'], 'mpg/'. $nName);
        // -------------------------------------------------------------------->

      } 
    }                   
  }

?>

Also, Würde man den MIME-Typ auf Fotos anpassen,
funktioniert es auch auf dem Smartphone.

Im Beispiel, also für den Upload von Videos, kann ich
diese nur auf dem Rechner hochladen, nicht auf dem
Smartphone.
 
Zuletzt bearbeitet:
Ich würde es so machen wir MWR87 geschrieben hat, füge Deinem IF am besten noch ein ELSE hinzu, um damit eine Art "Debug Output" zu bekommen. Wenn IF also fehlschlägt, gehe in ELSE und zeige Infos von $_FILES an:

PHP:
if ($_FILES['bew_mpg']['name'] != "") {
 
  $fType = strrchr($_FILES['bew_mpg']['name'],".");
  $nName = "xxx".$fType;
 
  // -------------------------------------------------------------------->
  move_uploaded_file($_FILES['bew_mpg']['tmp_name'], 'mpg/'. $nName);
  // -------------------------------------------------------------------->
 
} else {
  // Print Output von $_FILES
  print_r($_FILES['bew_mpg']);
}

Eventuell bekommst du dadurch die benötigte Info, was da schief läuft.
 
Zurück
Oben