PHP :: Aufgabe #196 :: Lösung #1

2 Lösungen Lösungen öffentlich
#196

Erzeugung einer passenden .html Datei für Dateien in einem Ordner

Fortgeschrittener - PHP von Holzi - 24.09.2018 um 13:22 Uhr
In dieser Aufgabe wollen wir automatisiert eine HTML-Datei erzeugen, mit der Medien angezeigt werden können. Dies machen wir, da unser Kunde Video und Bilddateien in einem Ordner ablegen möchte und wir diese anzeigen müssen. Eine einfache Anzeige der Bild/Video-Datei ist nicht möglich, da wir mit JavaScript die Dauer des Videos übermitteln wollen (Das ist aber nicht Bestandteil der eigentlichen Aufgabe und dient nur zur Erklärung).

Wir haben also eine Ordnerstruktur, in der der Kunde einen Ordner erstellt und eine Bild- oder Videodatei einfügt.

ordner1 → image.jpg
ordner2 → video.mp4


Wir erzeugen in diesen Ordnern eine index.html Datei:

ordner1 → image.jpg, index.html
ordner2 → video.mp4, index.html


Diese index.html Datei soll das Medium als Vollbild anzeigen (und das Video soll automatisch abgespielt werden).

Zusatzaufgabe: Die erstellten index.html Dateien sollen in einer Dauerschleife abwechselnd angezeigt werden. Dabei soll jede Bilddatei 15 Sekunden lang angezeigt werden, das Video exakt so lange, bis es zu Ende ist.
#1
vote_ok
von syneex (2670 Punkte) - 04.10.2018 um 15:09 Uhr
Quellcode ausblenden HTML-Code
<!DOCTYPE html>
<html>
<head>
	<title>Autoplay</title>
</head>
<body>
	<p>Unterstützte Dateiformate: MP4, JPG, PNG</p>
	<form method="POST">
		Bitte hier Pfad zum Bildordner eingeben:<br>
		<input type="text" name="imagepath" style="width: 400px;"><br>
		Bitte hier Pfad zum Videoordner eingeben:<br>
		<input type="text" name="videopath" style="width: 400px;"><br><br>
		<input type="submit" name="">
	</form>
</body>
</html>
Quellcode ausblenden PHP-Code
<?php 
if(isset($_POST['imagepath']) && isset($_POST['videopath']))
{
	$imagePath = $_POST['imagepath'];
	$videoPath = $_POST['videopath'];
	//Check Picture
	checkFileEnding($imagePath, "image");
	checkFileEnding($videoPath, "video");
	createImageHtmlFile($imagePath);
	createVideoHtmlFile($videoPath);
}

function checkFileEnding($FilePath, $type)
{
	$erg = false;
	$FilePathParts = pathinfo($FilePath);
	if(is_file($FilePath))
	{
		if($type == "image")
		{
			if($FilePathParts['extension'] == "jpg" || $FilePathParts['extension'] == "png")
			{
				$erg = true;
			}
			else
			{
				echo "<br>Imagefile is no valid type!";
				$erg = false;
			}
		}
		if($type == "video")
		{
			if($FilePathParts['extension'] == "mp4")
			{
				$erg = true;
			}
			else
			{
				echo "<br>Videofile is no valid type!";
				$erg = false;
			}
		}
	}
	else
	{
		echo "<br>File ist not a File! Check Path!";
		$erg = false;
	}
	return $erg;
}

function getFilename($path)
{
	$FilePathParts = pathinfo($path);
	$erg = $FilePathParts['basename'];
	return $erg;
}

function getFiledir($path)
{
	$FilePathParts = pathinfo($path);
	$erg = $FilePathParts['dirname'];
	return $erg;
}

function createImageHtmlFile($imgUrl)
{
	$path = getFiledir($imgUrl) . "\index.html";
	$filename = getFilename($imgUrl);
	$handle = fopen($path, "w");
	fwrite($handle, "<!DOCTYPE html>
					 <html>
					 <head>
					 	<title></title>
					 </head>
					 <body>
					 <img src=\"" . (string)$filename . "\" style=\"width:100%; height: auto;\">
					 </body>
					 <style>
					 body{margin: 0;}
					 </style>
					 </html>");
	fclose($handle);

}

function createVideoHtmlFile($mp4Url)
{
	$path = getFiledir($mp4Url) . "\index.html";
	$filename = getFilename($mp4Url);
	$handle = fopen($path, "w");
	fwrite($handle, "<!DOCTYPE html>
					 <html>
					 <head>
					 	<title></title>
					 </head>
					 <body>
					 <video style=\"width:100%; height: auto;\"controls autoplay><source src=\"" . (string)$filename . "\" type=\"video/mp4\"></video>
					 </body>
					 <style>
					 body{margin: 0;}
					 </style>
					 </html>");
	fclose($handle);
}
?>

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben