Marco190676: binärupload

Beitrag lesen

will einen binärupload für Grafiken machen.
Da bin ich auch schon weiter. Nun aber folgendes Problem zu lösen:

  • in die Grafik soll ein wasserzeichen eingebetet werden
  • die datei soll als thumbnail erstellt und ubenfalls in dei datenbank.

kann mir einer da helfen?

################ Code binärupload (geht allein) ###########
<?php

$dbcnx = @mysql_connect('v091008.dd2108.kasserver.com', 'v091008', '69ceb5o2');
if (!$dbcnx) {
  exit('<p>Verbindungsaufbau zum Datenbankserver ' .
      ' zurzeit nicht möglich.</p>');
}

if (!@mysql_select_db('jokes')) {
  exit('<p>Auswahl der Datenbank' .
'zurzeit nicht möglich.</p>');
}

if (isset($_GET['action'])) {
  $action = $_GET['action'];
} else {
  $action = '';
}

if (($action == 'view' or $action == 'dnld') and
    isset($_GET['id'])) {
  $id = $_GET['id'];

// Benutzer ruft eine Datei ab
  $sql = "SELECT filename, mimetype, filedata
      FROM filestore WHERE id = '$id'";
  $result = @mysql_query($sql);
  if (!$result) {
    exit('Datenbankfehler: ' . mysql_error());
  }

$file = mysql_fetch_array($result);
  if (!$file) {
    exit('Datei mit dieser ID nicht in der Datenbank gefunden!');
  }

$filename = $file['filename'];
  $mimetype = $file['mimetype'];
  $filedata = $file['filedata'];
  $disposition = 'inline';

if ($action == 'dnld') {
    $disposition = 'attachment';
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 5') or
        strpos($_SERVER['HTTP_USER_AGENT'], 'Opera 7')) {
      $mimetype = 'application/x-download';
    }
  }

header("content-disposition: $disposition; filename=$filename");
  header("content-type: $mimetype");
  header('content-length: ' . strlen($filedata));

echo $filedata;
  exit();

} elseif ($action == 'del' and isset($_GET['id'])) {
  $id = $_GET['id'];

// Benutzer löscht eine Datei
  $sql = "DELETE FROM filestore WHERE id = '$id'";
  $ok = @mysql_query($sql);
  if (!$ok) {
    exit('Datenbankfehler: ' . mysql_error());
  }

header('location: ' . $_SERVER['PHP_SELF']);
  exit();

} elseif (isset($_FILES['upload'])) {

// Ausschließen, dass eine Datei kein Upload ist.
  if (!is_uploaded_file($_FILES['upload']['tmp_name'])) {
    exit('Es wurde keine Datei hochgeladen!');
  }
  $uploadfile = $_FILES['upload']['tmp_name'];
  $uploadname = $_FILES['upload']['name'];
  $uploadtype = $_FILES['upload']['type'];
  $uploaddesc = $_POST['desc'];

// Datei zum binären Einlesen öffnen ("rb")
  $tempfile = fopen($uploadfile, 'rb');

// Gesamte Datei in den Arbeitsspeicher einlesen,
  // wobei die PHP-Funktion filesize benutzt wird,
  // um die Dateigröße zu ermitteln.
  $filedata = fread($tempfile, filesize($uploadfile));

// Einfügen in die Datenbank vorbereiten, indem
  // vor Sonderzeichen Backslashes gesetzt werden.
  $filedata = addslashes($filedata);

// SQL-Anfrage formulieren.
  $sql = "INSERT INTO filestore SET
      filename = '$uploadname',
      mimetype = '$uploadtype',
      description = '$uploaddesc',
      filedata = '$filedata'";

// Einfügen durchführen.
  $ok = @mysql_query($sql);
  if (!$ok) {
    exit('Datenbankfehler beim Einfügen der Datei: ' . mysql_error());
  }

header('location: ' . $_SERVER['PHP_SELF']);
  exit();

}

// Vorgabemäßige Seite: Gespeicherte Dateien anzeigen

$sql = 'SELECT id, filename, mimetype, description
    FROM filestore';
$filelist = @mysql_query($sql);
if (!$filelist) {
  exit('Datenbankfehler: ' . mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>PHP/MySQL Dateimagazin</title>
<meta http-equiv="content-type"
    content="text/html; charset=iso-8859-1" />
</head>
<body>

<h1>PHP/MySQL Dateimagazin</h1>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
    method="post" enctype="multipart/form-data">
  <p><label>Datei hochladen:<br />
    <input type="file" name="upload" /></label></p>
  <p><label>Dateibeschreibung:<br />
    <input type="text" name="desc" maxlength="255" /></label></p>
  <p><input type="submit" value="Hochladen" /></p>
</form>

<p>Folgende Dateien sind in der Datenbank gespeichert::</p>
<table>
<tr>
  <th>Dateiname</th>
  <th>Typ</th>
  <th>Beschreibung</th>
</tr>
<?php

if (mysql_num_rows($filelist) > 0) {
  while ($f = mysql_fetch_array($filelist)) {
    ?>

<tr valign="top">
  <td>
    <a href="<?php echo $_SERVER['PHP_SELF'];
        ?>?action=view&id=<?php echo $f['id']; ?>">
      <?php echo $f['filename']; ?></a>
  </td>
  <td><?php echo $f['mimetype']; ?></td>
  <td><?php echo $f['description']; ?></td>
  <td>
    [<a href="<?php echo $_SERVER['PHP_SELF'];
        ?>?action=dnld&id=<?php echo $f['id']; ?>"
      >Download</a> |
    <a href="<?php echo $_SERVER['PHP_SELF'];
        ?>?action=del&id=<?php echo $f['id']; ?>"
      onclick="return confirm('Diese Datei löschen??');"
      >Löschen</a>]
  </td>
</tr>

<?php
  }
} else {
  ?>
  <tr><td colspan="3">Keine Dateien!</td></tr>
  <?php
}
?>
</table>
</body>
</html>

################ Code wasserzeichen einbetten ###########
$Bild = "/www/htdocs/w00/bilder/galerie/".$zeileholen["pfad"]."/normal/".$zeileholen1["datei"];
$Grafik = ImageCreateFromJPEG($Bild);
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png");

ImageCopy($Grafik, $Wasserzeichen, imagesx($Grafik)-imagesx($Wasserzeichen), imagesy($Grafik)-imagesy($Wasserzeichen), 0, 0, imagesx($Wasserzeichen), imagesy($Wasserzeichen));

imagejpeg($Grafik,$Bild);