Hallo nun bin ich mal wieder da habe schon viele Fortschritte gemacht aber nun ein doofes Problem.
Ich habe mir eine Fotogalerie erstellt. Alles funktioniert an sich ganz gut.
Ich kann über den Browser bis zu 20 Dateien hochladen.
Was ich mit Google Chrome getestet habe. und mit filezilla in einen Vordefinierten Ordner mit Namen “uploads” bekomme ich es auch hin, das der Inhalt des Ordners hochgeladen wird.
Die Dateien werden jeweils in ein Bilderordner gespeichert und Thumbs werden erstellt und in einem Thumbnail Ordner gespeichert, beide Pfade also Bild und Thumbnail werden in einer mysqldb gespeichert.
Aber da kommt mein Problem. ich will beim Ordner Upload von mehr als 50 Dateien den Dateinamen alle 50 Bilder, die in die Datenbank eingetragen werden und im Bilderordner gespeichert. werden, umbenennen indem ich eine laufende Nummer anhänge.
Ist das mit der, ich nenne es mal internalen Variable $files() möglich vom Grundsatz her oder kann ich das nicht beeinflussen beim move Befehl?
Ich kann ja im Grunde da auch beeinflussen den Dateinamen zu Ändern wenn die Datei schon vorhanden ist.
Die Umbenennung muss halt vor dem Eintrag in der Datenbank und dem upload passieren.
Folgendes Script ist für den Upload zuständig.
Per Postcheck katalogisiere ich die Dateien/Bilder was ich bei der Ausgabe als Kriterien nutze und aus einem Formular stammen.
Beispiel :
Kategorie > Urlaub
Album > Tunesien
Subalbum > Tag 1
Ab Bild 51 im Uploadordner soll es wie folgt in die DB eingetragen werden:
Kategorie > Urlaub
Album > Tunesien
Subalbum > Tag 1_1
Ab Bild 101 im Uploadordner soll es wie folgt in die DB eingetragen werden:
Kategorie > Urlaub
Album > Tunesien
Subalbum > Tag 1_2
usw.
Meine Frage bezieht sich nur um die sequentelle Umbenennung.
Es handelt sich noch um ein Vorabscript.
Sicherheitstechniche Sachen werden erst später von mir korrigiert.
Auch wenn später keiner mehr so richtig klar kommt weil zu kompliziert geschrieben werde ich einen Weg finden es sauber zu dokumentieren oder umzuschreiben.
Also bitte helft mir bei meiner Frage und lasst erst mal mein grottenschlechtes Script welches zwar funktioniert aber wahrscheinlich noch einiges an Verbesserung braucht so sein wie es ist.
Denn mein Problem ist das ich alleine per learning by doing das alles aufgebaut habe und bei anderen Sachen die ihr einwerfen könntet den Faden wieder verliere.
Wie schon bei anderen Beiträgen von mir habe ich erwähnt das ich newbie bin und aus arbeitstechnischen Gründen mir leider die Zeit davon läuft. Ich lerne durch probieren, habe aber hier keine Antwort,
Hier mal ein Link zu meiner Testseite : http://alex-b-gallery.atwebpages.com/index.php
Und hier ein Link zu den Dateien (in ZIP gepackt mit Anleitung um es evtl mit xampp oder ähnliches zu testen, weiter zu nutzen what ever"
https://www.alex-b-test.de/downloads/gallerydateien.zip
Ich habe mir eine Fotogalerie erstellt. Alles funktioniert an sich ganz gut.
Ich kann über den Browser bis zu 20 Dateien hochladen.
Was ich mit Google Chrome getestet habe. und mit filezilla in einen Vordefinierten Ordner mit Namen “uploads” bekomme ich es auch hin, das der Inhalt des Ordners hochgeladen wird.
Die Dateien werden jeweils in ein Bilderordner gespeichert und Thumbs werden erstellt und in einem Thumbnail Ordner gespeichert, beide Pfade also Bild und Thumbnail werden in einer mysqldb gespeichert.
Aber da kommt mein Problem. ich will beim Ordner Upload von mehr als 50 Dateien den Dateinamen alle 50 Bilder, die in die Datenbank eingetragen werden und im Bilderordner gespeichert. werden, umbenennen indem ich eine laufende Nummer anhänge.
Ist das mit der, ich nenne es mal internalen Variable $files() möglich vom Grundsatz her oder kann ich das nicht beeinflussen beim move Befehl?
Ich kann ja im Grunde da auch beeinflussen den Dateinamen zu Ändern wenn die Datei schon vorhanden ist.
Die Umbenennung muss halt vor dem Eintrag in der Datenbank und dem upload passieren.
Folgendes Script ist für den Upload zuständig.
Per Postcheck katalogisiere ich die Dateien/Bilder was ich bei der Ausgabe als Kriterien nutze und aus einem Formular stammen.
Beispiel :
Kategorie > Urlaub
Album > Tunesien
Subalbum > Tag 1
Ab Bild 51 im Uploadordner soll es wie folgt in die DB eingetragen werden:
Kategorie > Urlaub
Album > Tunesien
Subalbum > Tag 1_1
Ab Bild 101 im Uploadordner soll es wie folgt in die DB eingetragen werden:
Kategorie > Urlaub
Album > Tunesien
Subalbum > Tag 1_2
usw.
Meine Frage bezieht sich nur um die sequentelle Umbenennung.
Es handelt sich noch um ein Vorabscript.
Sicherheitstechniche Sachen werden erst später von mir korrigiert.
Auch wenn später keiner mehr so richtig klar kommt weil zu kompliziert geschrieben werde ich einen Weg finden es sauber zu dokumentieren oder umzuschreiben.
Also bitte helft mir bei meiner Frage und lasst erst mal mein grottenschlechtes Script welches zwar funktioniert aber wahrscheinlich noch einiges an Verbesserung braucht so sein wie es ist.
Denn mein Problem ist das ich alleine per learning by doing das alles aufgebaut habe und bei anderen Sachen die ihr einwerfen könntet den Faden wieder verliere.
Wie schon bei anderen Beiträgen von mir habe ich erwähnt das ich newbie bin und aus arbeitstechnischen Gründen mir leider die Zeit davon läuft. Ich lerne durch probieren, habe aber hier keine Antwort,
PHP-Code:
<?php
//PHP Start
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
require_once 'includes/connect.php';
require_once 'includes/functions.inc.php';
require_once 'gallery_inc/gallery_ini.php';
$user = check_user();
$seitenname = 'Ordnerupload';
require_once 'header.php';
// Postcheck
if(!empty($_POST["kategorie"])) {$val_kategorie = $_POST["kategorie"];} else {$val_kategorie = "";}
if(!empty($_POST["album"])) {$val_album = $_POST["album"];} else {$val_album = "";}
if(!empty($_POST["subalbum"])) {$val_subalbum = $_POST["subalbum"];} else {$val_subalbum = "";}
// Postcheck ende
// Dateien aus Ordner hochladen
$_FILES = array_slice(scanDir($upload_dir), 2);
$anz_uploads = count($_FILES);
for ($i = 0; $i < count($_FILES); $i++)
{
// Info über die Datei holen
$path = $upload_dir . $_FILES[$i];
$tmp_bild = $path;
$newpath = $bilder_dir;
list($tmpWidth, $tmpHeight, $tmpType) = getImageSize($path);
$set_filename = explode(".", $_FILES[$i]);
$filename = $set_filename[0];
$extension = strtolower($set_filename[1]);
$fn_filter = utf8_decode($filename);
$fn_trim = trim($fn_filter);
$fn_lower = mb_strtolower($filename);
$fn_rewritechars = str_replace(["ä", "ö", "ü", "ß", " ",], ["ae", "oe", "ue", "ss", "_",], $fn_lower);
$fn_result = preg_replace("/[^a-z0-9_-]/", '', $fn_rewritechars);
$bildname = substr($fn_result, 0, $maxFilename) . "." . $extension;
$thumb_name = 'tumb_' . $bildname;
// Info über die Datei holen ende
// Datumsausgabe generieren
$exif = exif_read_data($tmp_bild, 0, true);
if (isset($exif['EXIF']['DateTimeOriginal']))
{
$datum = $exif['EXIF']['DateTimeOriginal'];
}
else
{
$datum = date("d.m.Y");
}
$day_val = $datum;
$toDay = strtotime("+0 day", strtotime($day_val));;
$createdate = date("d.m.Y", $toDay);
$tag = date("d", $toDay);
$monat = date("m", $toDay);
$jahr = date("Y", $toDay);
// Datumsausgabe generieren Ende
// Dateinamen und Pfad formatieren
$bilddatei = $bilder_dir . $bildname;
$thumbdatei = $thumb_dir . 'tumb_' . $bildname;
$uploaddatei = $path;
// Dateinamen und Pfad formatieren ende
// Datenbankeinträge
$insert = $db->prepare
("INSERT IGNORE INTO `gal_bilder` SET
`bilddatei` = :bilddatei,
`thumbdatei` = :thumbdatei,
`bildname` = :bildname,
`kategorie` = :kategorie,
`album` = :album,
`subalbum` = :subalbum,
`createdate` = :createdate,
`tag` = :tag,
`monat` = :monat,
`jahr` = :jahr,
`width` = :width,
`height` = :height");
if ($insert->execute
([
':bilddatei' => $bilddatei,
':thumbdatei' => $thumbdatei,
':bildname' => $bildname,
':kategorie' => $val_kategorie,
':album' => $val_album,
':subalbum' => $val_subalbum,
':createdate' => $createdate,
':tag' => $tag,
':monat' => $monat,
':jahr' => $jahr,
':width' => $tmpWidth,
':height' => $tmpHeight
]))
{
// Erzeugung Thumbnail
// Dateiformat
switch ($extension)
{
case 'jpg':
$create = imageCreatefromJPEG($tmp_bild);
break;
case 'png':
$create = imageCreatefromPNG($tmp_bild);
break;
case 'gif':
$create = imageCreatefromGIF($tmp_bild);
break;
case 'webp':
$create = imageCreatefromWEBP($tmp_bild);
break;
}
// Breite und Höhe des Bildes ermitteln
$imageW = $tmpWidth;
$imageH = $tmpHeight;
// Thumbnail Abmessungen reduzieren
if ($imageW > $imageH)
{
$thumbW = $thumbWidth;
$thumbH = $imageH / $imageW * $thumbWidth;
}
if ($imageW < $imageH)
{
$thumbH = $thumbHeight;
$thumbW = $imageW / $imageH * $thumbHeight;
}
if ($imageW == $imageH)
{
$thumbW = $thumbWidth;
$thumbH = $thumbHeight;
}
// Thumbnail Abmessungen reduzieren ende
// Thumbnail mit neuen Abmessungen kopieren
$thumbnail = imageCreateTruecolor($thumbW, $thumbH);
imageCopyResampled($thumbnail, $create, 0, 0, 0, 0, $thumbW, $thumbH, $imageW, $imageH);
// Thumbnail speichern und den Grafikspeicher löschen
imageJPEG($thumbnail, $thumb_dir . $thumb_name, $thumbQuality);
imageDestroy($thumbnail);
// Erzeugung Thumbnail Ende
}
// Datenbankeinträge ende
// Fertige Dateien verschieben
rename($uploaddatei, $bilddatei);
$uploadresult = $anz_uploads;
// Fertige Dateien verschieben ende
// Erfolgsmeldung erstellen
if ($anz_uploads > 0)
{
$erfolgout = $anz_uploads.' von '.$anz_uploads;
$output =
'
<div class="col-10 my-4 mx-auto menu" style="color:#00ff00; border:5px #00ff00 solid; border-radius:15px">
<div class="col-10 my-4 mx-auto p-3 text-center" style="color:#00ff00; border:5px #00ff00 solid; border-radius:15px">
<h3>Es wurden ' . $erfolgout . ' Dateien erfolgreich in den Bilderordner verschoben! </h3>
</div>
</div>
';
}
else
{
$output =
'
<div class="col-10 my-4 mx-auto menu" style="color:#ff0000; border:5px #ff0000 solid; border-radius:15px">
<div class="col-10 my-4 mx-auto p-3 text-center" style="color:#ff0000; border:5px #ff0000 solid; border-radius:15px">
<h3>Es sind keine Dateien im Uploadordner vorhanden!</h3>
</div>
</div>
';
}
// Erfolgsmeldung erstellen ende
}
// Dateien aus Ordner hochladen ende
echo $output;
require_once 'footer.php';
?>
<script>
setTimeout("location.href='bilder_anzeige.php'",3000);
</script>
Und hier ein Link zu den Dateien (in ZIP gepackt mit Anleitung um es evtl mit xampp oder ähnliches zu testen, weiter zu nutzen what ever"
https://www.alex-b-test.de/downloads/gallerydateien.zip
Kommentar