Zum Inhalt springen

Downloadlinks und Bilder aus Content extrahieren

Erstellt am 19. Juni 2007 · 8 Antworten · letzte Antwort am 20. Juni 2007

Tags: Dateien & FAL, Frage

viktor ·

Hallo,

ich habe mir mittlerweile einige ähnliche Extensions mit diesem Thema angesehen und ich werde trotzdem nicht richtig schlau daraus:

Wie kann man sich alle im Content verwendeten Dateidownloads und eingebundene Bilder extrahieren? Dies sollte eigendlich ganz gut über Reguläre Ausdrücke funktionieren, nachdem der Content gerendert wurde, aber gibt es nicht noch eine elegantere Methode in Typo3? Werden die verwendeten Dateien nicht noch separat referenziert?

Vielen Dank im voraus für jeden Tip!

Beste Grüße,

Viktor

NickD ·

die sind doch alle in fileadmin oder uploads oder nicht?
was genau willst du denn machen?

viktor ·

Ich habe eine Extension geschrieben, die es dem Benutzer erlaubt, die aktuelle Seite inklusive aller gelinkten Dokumente und Bilder als ZIP Datei zu speichern. Dazu benötige ich einen "einfachen" Zugriff auf alle verwendeten Bilder und Downloads innerhalb des Contents.

Im Moment mache ich es per Regulärer Ausdruck:

function getMediaFromContent($content) {			
	preg_match_all("/fileadmin\/media\/[a-zA-Z0-9\.\_\-\ ]+/i", $content, $matches_01, PREG_PATTERN_ORDER);				
	preg_match_all("/uploads\/media\/[a-zA-Z0-9\.\_\-\ ]+/i", $content, $matches_02, PREG_PATTERN_ORDER);				
	preg_match_all("/uploads\/pics\/[a-zA-Z0-9\.\_\-\ ]+/i", $content, $matches_03, PREG_PATTERN_ORDER);				
		
	if (is_array($matches_01[0])) {
		$_temp_array_01 = array();							
		foreach($matches_01[0] as $match){		  
			$_temp_array_01[] = $match;					
		}						
	}
	if (is_array($matches_02[0])) {
		$_temp_array_02 = array();							
		foreach($matches_02[0] as $match){		  
			$_temp_array_02[] = $match;					
		}						
	}
	if (is_array($matches_03[0])) {
		$_temp_array_03 = array();							
		foreach($matches_03[0] as $match){		  
			$_temp_array_03[] = $match;					
		}						
	}
		
	$_temp_array = array_merge($_temp_array_01, $_temp_array_02, $_temp_array_03);
		
	return is_array($_temp_array) ? $_temp_array : false;			
}

Ich habe halt gedacht, das alle referenzierten Dokumente und Bilder bereits von Typo3 separat in der DB gespeichert werden und ich mir diese anhand der pageID nur noch auslesen muss.

Beste Grüße,

Viktor

viktor ·

Ja genau, die Tabelle hab ich mir angesehen. Da wird nix derartiges gespeichert. Vielleicht hab ich was übersehen...

viktor ·

So weit ich das sehen konnte, beinhalten die beiden Felder nur binären Content und keine Referenzen zu den Bildern selbst. Dabei fehlt halt noch ein Feld mit allen im Text verwendeten Downloads bzw. Links zu Dateien.

NickD ·

also in den blob felder wird der dateiname gespeichert (kannst ja mal testweise in typ test ändern)....generell würde ich als ort "uploads" sagen. wo aber genau in der datenbank der pfad gespeichert wird, kann ich dir nicht sagen. evtl. wird der pfad auch nicht gespeichert, sondern die globals der jeweiligen extension genutzt.
wenn ich bilder über typo3 in einer seite einbinde, dann befindet sich das unter /uploads/pics/.

just2b ·

mein ansatz würde auch über die tt_content gehen.

einfach ein plugin einbinden, das einen aufruf macht, am besten per eID-Technologie, da am schnellsten, sich von der Seitenid (die man übergibt) den Text und die Bilder holt und dann das packt und zum download anbietet.. IMO keine zu große Sache.

georg