PHP - PDF-Dateien aus einer Auswahlliste hochladen

[Bildschirmfoto]
 PDF-Dateien aus einer Auswahlliste hochladen
PDF-Dateien aus einer Auswahlliste hochladen

Der Benutzer wählt die Datei (Preislisten, Beitrittsformulare, Geschäftsordnung, ...), aus einer Auswahlliste aus die er ersetzen möchte. Dann wählt er die Datei von seinem lokalen Rechner aus, diese wird dann nach dem absenden mit PHP gegebenenfalls umbenannt (je nach Auswahl) und in das entsprechende Verzeichnis kopiert.


<!DOCTYPE html>

<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title>Datei hochladen</title>

  <style>
  body {
   font-family: Verdana, Arial, Sans-Serif;
  }

  a:link, a:visited {
   color: Royalblue;
  }
  </style>

 </head>
<body>

<form method="post" enctype="multipart/form-data">

<fieldset>
 <legend>Datei hochladen</legend>

 <p>
 <label>Art der Datei: 
 <select name="art" required="required">
  <option></option>
  <option value="preisliste1.pdf">Preisliste 1</option>
  <option value="preisliste2.pdf">Preisliste 2</option>
  <option value="beitrittsformular.pdf">Beitrittsformular</option>
  <option value="geschaeftsordnung.pdf">Geschäftsordnung</option>
 </select>
 </label>
 </p>

 <p>
 <label>Datei: 
 <input type="file" name="datei" required="required"></label>
 </p>

 <p>
 <label>Passwort: <input type="password" name="passwort" required="required"></label> - 
 <input type="submit" value="Datei hochladen">
 </p>

<?php
/* PDF-Datei hochladen mit Auswahlliste
 und Passwortschutz */

// Passwort
$password "0000";

// In dieses Verzeichnis werden die PDF-Dateien verschoben, 
// ausgehend von dem akt. Verz. in dem diese Datei liegt.
$directory "pdf/"// Mit Schrägstrich / am Ende!


// Angabe des Mimetypen
$mimeType = ["pdf" => "application/pdf"];

 
// Ein Fehler
 
$error = [];

// Formular wurde abgesendet
if ($_SERVER["REQUEST_METHOD"] == "POST") {

 
// Passwort überprüfen
 
if ($_POST["passwort"] == $password) {

  
// Verzeichniss vorhanden
  
if (!file_exists($directory))
   
$error[] = 'Das Verzeichnis: "' $directory '" ist nicht vorhanden!';

  
// Schreibrechte gesetzt
  
if (!is_writeable($directory))
   
$error[] = 'Das Verzeichnis: "' $directory '" besitzt keine Schreibrechte!';

  
// Fehler beim hochladen
  
if ($_FILES["datei"]["error"])
   
$error[] = 'Fehler beim hochladen: ' $_FILES["datei"]["error"];

  
//  Datei wurde in temporäres Verz. hochgeladen
  
if (is_uploaded_file($_FILES["datei"]["tmp_name"])) {

   
// Infos über die Datei holen
   
$path pathinfo($_FILES["datei"]["name"]);
   
$extension strtolower($path["extension"]);
   
$finfo finfo_open(FILEINFO_MIME_TYPE);
   
$finfoMimeType finfo_file($finfo$_FILES["datei"]["tmp_name"]);
   
finfo_close($finfo);

   
// Dateiformat überprüfen
   
if (!in_array($finfoMimeType$mimeType) ||
       !
in_array($_FILES["datei"]["type"], $mimeType) ||
       !
in_array($extensionarray_keys($mimeType)))
    
$error[] = 'Falsches Dateiformat, erlaubt ist nur das PDF-Dateiformat!';

   
// Dateinamen vergleichen
   //   if ($_POST["art"] != $_FILES["datei"]["name"])
   //    $error[] = 'Falscher Dateiname!';

   // Kein Fehler!
   
if (count($error) == 0) {

    
// Umbenennen
    
$newName $_POST["art"];

    
// Datei verschieben
    
if (move_uploaded_file($_FILES["datei"]["tmp_name"], $directory $newName)) {
     if (
file_exists($directory $newName)) {
      echo 
'<p>Die Datei: <a href="' $directory $newName '" target="_blank">' .
       
$newName '</a> wurde erfolgreich hochgeladen</p>';
     }
    }
   }
   else {
    echo 
'<p>' implode('<br>&#10008; '$error) . '</p>';
   }
  }
 }
 else {
  echo 
'<p>Das Passwort ist falsch!</p>';
 }
}
?>

 </fieldset>
</form>

</body>
</html>

Bausteine  Alle Anzeigen

Eine zufällige Auswahl von Codeschnipseln aus den Bereichen HTML, CSS, PHP, JavaScript und MySQL.

<legend> Gruppenüberschrift

CSS - Externe URL des Hyperlinks sichtbar machen

PHP - Header mit absoluter URL senden

JavaScript - Zahlen ins deutsche Format umwandeln

MySQL - MySQL-Anweisung mit PHP ausgeben

Externe Linkliste
Links zu anderen Webseiten sollten nach Möglichkeit zentral auf einer Seite geschrieben werden — Grund: Sollte ein externer Link einmal nicht mehr funktionieren (z.B., wenn die Webseite gelöscht wurde), so lässt sich das leichter überprüfen, als wenn die externen Links auf fünfzig (oder mehr) Seiten verteilt sind.