Downloadfunktion mit Domain ersetzen Funktionfehlerhaft

Fragen zum Erstellen von Templates für webEdition.
Michael D.
Senior Member
Beiträge: 523
Registriert: Mo 16. Jun 2003, 18:02

Downloadfunktion mit Domain ersetzen Funktionfehlerhaft

Beitragvon Michael D. » Mo 5. Okt 2015, 10:22

Hallo,

ich habe eine Downloadfunktion innerhalb einer Website.
Die Funktion greift auf eine Grafik/Dokument innerhalb eines Ordners zu, welcher mittels der Domain ersetzen Funktion umgeleitet wird.
Nun wird das Dokument nicht gefunden, welches heruntergeladen werden soll.
Wie kann ich das Problem bei einem Multidomain Projekt lösen?

Das ist meine Downloadfunktion:

Code: Alles auswählen

<div class="row">
	
	<we:ifEditmode>Downloadlinks hinzufügen<hr /></we:ifEditmode>
	
	<we:block name="Downloads">
		<div class="downloads col-md-4">
			
			<we:comment>document to be called is based on ForceDownload.tmpl</we:comment>
			<we:ifEditmode><we:link name="DownloadLink" /></we:ifEditmode>
			<we:setVar to="global" nameto="DownloadLinkHref" from="block" namefrom="DownloadLink" typefrom="link" />
			<?php
//echo $GLOBALS['DownloadLinkHref'];
$GLOBALS['path_parts'] = pathinfo($GLOBALS['DownloadLinkHref']);

//Beispiel Dateiinformationsausgaben
//echo $path_parts['dirname'], "<br />";
//echo $path_parts['basename'], "<br />";
//echo $GLOBALS['path_parts']['extension'], "<br />";
//echo $path_parts['filename'], "<br />"; // seit PHP 5.2.0

//wandelt alle Dateiendungen in Kleinbuchstaben um
$GLOBALS['path_parts']['extension'] = strtolower($GLOBALS['path_parts']['extension']);
			?>
			
			<?php
if(!empty($GLOBALS['path_parts']['extension'])){
	$imagePath = "/fiber.discount/sys-data/img/icn/file-icons/".$GLOBALS['path_parts']['extension'].".png";
	//echo $imagePath;
	$imageID = path_to_id($imagePath); 
	//echo $imageID;
} 
			?>
			<we:img name="icon" id="\$imageID" thumbnail="FileIconDownload" showcontrol="false" showinputs="false" />
			<we:ifNotEditmode><a href='<we:url type="document" id="35" />?file_path=<we:link name="DownloadLink" only="href" />'><we:link name="DownloadLink" only="text" /></a><br /></we:ifNotEditmode>
			<we:ifEditmode>Kurze Dateibeschreibung: </we:ifEditmode>
			<we:textarea wysiwyg="true" name="FileDescription" htmlspecialchars="true" commands="insertbreak,pastetext,pasteword,removeformat,removetags,lang,editsource,insertspecialchar" removefirstparagraph="true" inlineedit="false" />
			<we:ifNotEditmode>
				<we:ifVarNotEmpty match="FileDescription"><br /></we:ifVarNotEmpty>
				<we:else />
				<br />
			</we:ifNotEditmode>
			<i>
				<?php 
echo \$GLOBALS['path_parts']['basename']; 
echo " - ";
\$file = \$GLOBALS['DownloadLinkHref'];
\$filesize = filesize(\$_SERVER['DOCUMENT_ROOT'].\$file); 

\$array = array(
	'YB' => 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024,
	'ZB' => 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024,
	'EB' => 1024 * 1024 * 1024 * 1024 * 1024 * 1024,
	'PB' => 1024 * 1024 * 1024 * 1024 * 1024,
	'TB' => 1024 * 1024 * 1024 * 1024,
	'GB' => 1024 * 1024 * 1024,
	'MB' => 1024 * 1024,
	'KB' => 1024,
);
if(\$filesize <= 1024)
{
	\$filesize = \$filesize . ' Bytes';
}
foreach(\$array AS \$name => \$size)
{
	if(\$filesize > \$size || \$filesize == \$size)
	{
		\$filesize = round((round(\$filesize / \$size * 100) / 100), 2) . ' ' . \$name;
	}
}

echo \$filesize;
				?>
			</i>
		</div>
	</we:block>
	
</div>
_____________________________________________
Grüße
Michael

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Downloadfunktion mit Domain ersetzen Funktionfehlerhaft

Beitragvon mokraemer » Mo 5. Okt 2015, 11:37

du solltest nicht auf die Datei direkt, sondern über den Umweg von
"webEdition/" gehen.
Also wenn der Pfad der Datei "/projekt1/test/bla.pdf" ist, dann greifst du auf
"webEdition/projekt1/test/bla.pdf" zu. Du kannst das dann natürlich über realpath Ersetzungen der Datei und des DocRoot auch realisieren.
webEdition-Kern-Entwickler

Michael D.
Senior Member
Beiträge: 523
Registriert: Mo 16. Jun 2003, 18:02

Re: Downloadfunktion mit Domain ersetzen Funktionfehlerhaft

Beitragvon Michael D. » Mo 5. Okt 2015, 12:02

Der Pfad wird aus dem we:link Tag generiert, heißt dass das der Tag dann hier nicht funktioniert?
_____________________________________________
Grüße
Michael

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Downloadfunktion mit Domain ersetzen Funktionfehlerhaft

Beitragvon WBTMagnum » Mo 5. Okt 2015, 13:54

Hallo Michael,

Wenn ich das richtig deute, dann liegt dein Problem im Wrapper-Code (<we:url type="document" id="35" />). Der ist wohl nicht Multi-Domain aware.

Lösungsansätze die mir auf die Schnelle einfallen:
  • Für jede Sub-Site einen eigenen Wrapper einrichten.
  • Domain an Wrapper übergeben, sodass dieser die richtige Datei laden kann.
  • Pfad für Domain als Prefix einfügen.

HTH,
Sascha


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

Wer ist online?

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