Kein Bildupload über Frontend in Klasse

Fragen zum Erstellen von Templates für webEdition.
JFuchs
Junior Member
Beiträge: 28
Registriert: Mi 14. Dez 2016, 10:23

Kein Bildupload über Frontend in Klasse

Beitragvon JFuchs » Do 4. Mai 2017, 13:19

Hallo,

ich habe folgende Problem.

Ich würde gerne über ein Frontendformular Text und ein Bild eine Objekt-Klasse füllen.
Der Text wird ohne Probleme in die Klasse geschrieben. Beim Bild klappt es leider nicht.

Hier mein Frontend-Code (sessionStart ist vorhanden nur in diesem Bereich nicht sichtbar):

Code: Alles auswählen

<we:form name="stream_eingabe" type="object" enctype="multipart/form-data" id="self" classid="2" method="post">
Headline des Streams: <we:userInput type="textinput" name="stream_headline" size="50" maxlength="50" /><br>
Text des Streams: <we:userInput type="textarea" name="stream_text"  size="50" height="100" /><br>
Datum: <we:userInput type="date" name="stream_datum" editable="false" format="d.m.Y" /><br>
Username: <we:userInput type="textinput" name="stream_username" editable="false" value="\$_benutzer" /><br>
Vorname: <we:userInput type="textinput" name="stream_vorname" editable="false" value="\$_vorname" /><br>
Nachname: <we:userInput type="textinput" name="stream_nachname" editable="false" value="\$_nachname" /><br>
Bild: <we:userInput type="img" name="stream_picture" editable="true" parentid="314" size="100" />
<input type="submit" />
</we:form>
<we:ifRegisteredUser>
<we:write type="object" formname="stream_eingabe" publish="true" searchable="true" classid="2" />
</we:ifRegisteredUser>

Ich hoffe es hat jemand eine Idee

Danke im Voraus

Joachim

ramon
webEdition Partner
webEdition Partner
Beiträge: 109
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Weimar
Kontaktdaten:

Re: Kein Bildupload über Frontend in Klasse

Beitragvon ramon » Fr 5. Mai 2017, 15:07

Das sieht eigentlich alles richtig aus. Wichtig ist das du in deiner Klasse auch ein Feld hast für das Bild und dort auch ein Verzeichnis für den Upload festlegst.

Bei dir z.B.
- Name: stream_picture
- Typ: Grafik
- Standardverzeichnis: /xy

Und so sieht mein Upload Tag aus.

<we:userInput type="img" name="img" editable="true" size="15" parentid="9920" quality="9" maximize="false" bordercolor="border:none;" checkboxstyle="" checkboxclass="" inputclass="bild" checkboxtext="" />
bindestrich - media.
http://www.bindestrich.com
Agentur für Grafikdesign & Webdesign

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Kein Bildupload über Frontend in Klasse

Beitragvon Carrear » So 7. Mai 2017, 15:58

Da ich ja gelesen habe, dass dich auch das Aussehen des Eingabefeldes stört (was ich nachvollziehen kann), wie wäre es dann mit einem komplett eigenen Upload? Du kannst einen ganz normalen Formularupload machen, inklusive aller deiner Modifikationen und Prüfungen für die Datei und kannst diese dann im Nachhinein nur noch in wE zu registrieren. Sowas in dieser Richtung hier (habe das gerade aus einem Projekt von mir kopiert, also sicher nicht 1:1 für dich anwendbar):

Code: Alles auswählen

$img = new we_imageDocument();
$pathinfo = pathinfo($target_file);
$filedata = file_get_contents($target_file);
$img->Filename = $pathinfo['filename']; // Ohne Dateiendung
$img->Extension = '.'.strtolower($pathinfo['extension']);
$img->Text = $img->Filename.$img->Extension;
$img->Path = $GLOBALS['backgroundimageUploadPath'] . '/' . $_POST['idEvent'] .'/'. $img->Text;
$fileserverpath = $_SERVER['DOCUMENT_ROOT'].$img->Path;
file_put_contents($fileserverpath, $filedata);
$img->setParentID($folderid); // Ziel-Verzeichnis
$img->setElement("filesize", filesize($fileserverpath), "attrib");
$img->setElement("type", getContentTypeFromFile($target_file), "attrib");
$img->Table = FILE_TABLE;
$img->Published = time();
$img->DocChanged = true;
$img->we_save();
$imgid = $img->ID;
Und dann kannst du das betroffene wE Objekt eben auch per PHP ändern. Ich weiß, dass ich hier im verbale Haue für solche Lösungen bekomme :D aber das sind für mich einfach die besten Lösungen.

Beste Grüße
Martin

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Kein Bildupload über Frontend in Klasse

Beitragvon Carrear » So 7. Mai 2017, 16:18

Der Vollständigkeit halber.
Du initialisiert dein Objekt mit der ID, schreibt die Bild ID in das Feld und speicherst - ungefähr so:

Code: Alles auswählen

$objId = XYZ;
$objectr = new we_objectFile($objId);
$objectr->setElement('Bild', $imgid);
$objectr->we_save();
$objectr->we_publish();
Ich hänge dir hier mal ein komplettes formular inklusive Upload etc an. Ich erstelle halt das komplette Objekt darüber.

Code: Alles auswählen

<div class="row">
	<div class="col-12">
		<we:ifRegisteredUser>
		<form action="" method="POST" enctype="multipart/form-data" class="mb-5 p-3" style="border: 1px solid grey">
						<h4>
				Kundenrezension
			</h4>
			<we:url type="document" id="779" to="global" nameto="imagepath" />
			<?php
			if ( isset( $_POST['customerSubmit'] ) ) {
				$nameaddition = date('Y-m-d_h-i-s');
				$target_dir = "/kunden/395398_30655/webseiten" . $GLOBALS['imagepath'];
				$target_file = $target_dir . $nameaddition. "-" . basename($_FILES["Kundenbild"]["name"]);
				$uploadOk = 1;
				$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
				// Check if image file is a actual image or fake image

					$check = getimagesize($_FILES["Kundenbild"]["tmp_name"]);
					if($check !== false) {
						$uploadOk = 1;
					} else {
						echo '<div class="alert alert-danger">Datei ist kein Bild.</div>';
						$uploadOk = 0;
					}

				// Check if file already exists
				if (file_exists($target_file)) {
					echo '<div class="alert alert-danger">Dateiname existiert schon.</div>';
					$uploadOk = 0;
				}
				// Check file size
				if ($_FILES["Kundenbild"]["size"] > 500000) {
					echo '<div class="alert alert-danger">Bilddatei zu groß.</div>';
					$uploadOk = 0;
				}
				// Allow certain file formats
				if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
					echo '<div class="alert alert-danger">Nur folgende Formate sind erlaubt: JPG, JPEG, PNG und GIF.</div>';
					$uploadOk = 0;
				}
				// Check if $uploadOk is set to 0 by an error
				if ($uploadOk == 0) {
					echo '<div class="alert alert-danger">Es gab einen Fehler. Die Datei wurde nicht hochgeladen.</div>';
				// if everything is ok, try to upload file
				} else {
					if (move_uploaded_file($_FILES["Kundenbild"]["tmp_name"], $target_file)) {
						echo '<div class="alert alert-success">Die Datei '. basename( $_FILES["Kundenbild"]["name"]). ' wurde erfolgreich hochgeladen.</div>';
						$data = $_POST;
						$objectr = new we_objectFile();
						$objectr->we_new();
						$objectr->TableID = 7;
						$objectr->setRootDirID(true);
						$objectr->resetParentID();
						$objectr->restoreDefaults();
						$objectr->setParentID(54);
						$objectr->Language = 'de_DE';
						$objectr->IsSearchable = 1;
						$objectr->Text = we_import_functions::correctFilename( $nameaddition. "-" . basename($_FILES["Kundenbild"]["name"]) ); // If not work, remove we_import_...
						$objectr->Path = $objectr->getParentPath() . (($objectr->getParentPath() != "/") ? "/" : "") . $objectr->Text;
						
						
						$filename = $target_file;
						$filedata = file_get_contents($filename);
						$parentid = 779;


						$img = new we_imageDocument();
						$pathinfo = pathinfo($filename);
						$img->Filename = $pathinfo['filename']; // Ohne Dateiendung
						$img->Extension = '.'.strtolower($pathinfo['extension']);
						$img->Text = $img->Filename.$img->Extension;
						$img->Path = id_to_path($parentid) .'/'. $img->Text;
						$fileserverpath = $_SERVER['DOCUMENT_ROOT'].$img->Path;
						file_put_contents($fileserverpath, $filedata);
						$img->setParentID($parentid); // Ziel-Verzeichnis
						$img->setElement("filesize", filesize($fileserverpath), "attrib");
						$img->setElement("type", getContentTypeFromFile($filename), "attrib");
						$img->Table = FILE_TABLE;
						$img->Published = time();
						$img->DocChanged = true;
						
						
						$img->we_save();
						$bildid = $img->ID;
						
						$objectr->setElement('Titel', $data['Name']);
						$objectr->setElement('Beschreibung', $data['Beschreibung']);
						$objectr->setElement('Bild', $bildid);
						$objectr->setElement('Bewertung', $data['Bewertung']);
						$objectr->we_save();
						$objectr->we_publish();
						$createdID = $objectr->ID;
					} else {
						echo '<div class="alert alert-danger">Es gab einen Fehler. Die Datei wurde nicht hochgeladen.</div>';
					}
				}
			}
			?>
			<div class="form-group">
				<label for="name">Name *</label>
				<input type="text" name="Name" id="name" class="form-control" required="required">
			</div>
			<div class="form-group">
				<label for="bewertung">Bewertung *</label>
				<div class="range">
					<input type="range" name="Bewertung" id="bewertung" min="1" max="5" value="4" required="required">
					<output id="range">4</output>
				</div>
			</div>
			<div class="form-group">
				<label for="beschreibung">Kommentar</label>
				<textarea  name="Beschreibung" id="beschreibung" class="form-control" rows="3"></textarea>
			</div>
			<div class="form-group">
				<label for="customerImage">Bilddatei *</label>
				<input type="file" class="form-control" id="customerImage" name="Kundenbild" accept="image/*" aria-describedby="fileHelp" required="required">
				<small id="fileHelp" class="form-text text-muted">Wählen Sie die Bilddatei zum Upload.</small>
			</div>
			<input type="hidden" name="customerSubmit" value="1">
			<button type="reset" class="btn btn-default">
				Zurücksetzen
			</button>
			<button type="submit" class="btn btn-primary float-right">
				Aktualisieren
			</button>
		</form>
		<we:else />
			<div class="alert alert-info mb-3">
				<strong>Bitte loggen Sie sich ein.</strong> Dieser Bereich ist nur für authorisierte Personen
			</div>
		</we:ifRegisteredUser> 
	</div>
</div>


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste