zobrazení uploadovaného obrázku v šabloně

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mardon
Člen | 59
+
0
-

Zápasím tady se zobrazením uploadovaného obrázku v šabloně.

	function renderDetail($slug)
	{
		$record = $this->recordFacade->getBySlug($slug);
		if (!$record) {
			$this->error();
		}
		$this->template->record = $record;
		$image = Image::fromFile('holubicka.jpg');
		$this->template->image = $image;
	}
{block content}
<div class="container">
	<div class="row">
		<div class="col-xs-12">
			<h1>{$record->name}</h1>
			<div>
				{$record->text}
			</div>
			<div>
				{$record->email}
			</div>
			<div>
				{$record->adress}
			</div>
						<div>
				{$record->created}
			</div>
			<div>
				<img source="{$image|dataStream}">
			</div>
		</div>
	</div>
</div>
{/block}

ale nic se mi nezobrazuje

David Matějka
Moderator | 6445
+
0
-

ne <img source=, ale <img src=.. a data stream doporucuji pouzivat spise mene nez vice a jen u mensich souboru..

mardon
Člen | 59
+
0
-

matej21 napsal(a):

ne <img source=, ale <img src=.. a data stream doporucuji pouzivat spise mene nez vice a jen u mensich souboru..

no ani tak mi to nic nezobrazuje

jaký je tedy doporučený postup?

Šaman
Člen | 2666
+
0
-

Datastream neznám, ale atribut src má obsahovat cestu k souboru, nikoliv samotný obrázek.

Jiří Nápravník
Člen | 710
+
0
-

Šaman napsal(a):

Datastream neznám, ale atribut src má obsahovat cestu k souboru, nikoliv samotný obrázek.

Nemusí. Může obsahovat samotný soubor v base64, tzv. data-uri.

Mesiah
Člen | 240
+
0
-

Jiří Nápravník napsal(a):

Šaman napsal(a):

Datastream neznám, ale atribut src má obsahovat cestu k souboru, nikoliv samotný obrázek.

Nemusí. Může obsahovat samotný soubor v base64, tzv. data-uri.

ale pak musí být nastaveny rozměry obrázku, ty nejsou obsahem base64, pokud se nepletu.

PS: holubicka.png je jen pro případ popisu chyby na fóru, nebo skutečně máš jen prostě cestu ‚holibicka.png‘? Co dostáváš na dump?

Editoval Mesiah (4. 1. 2014 1:07)

Mysteria
Člen | 797
+
0
-

@mardon: Když si zobrazíš zdrojovej kód stránky s tím obrázkem, nemáš náhodou v jeho atributu src místo hodně dlouhýho base64 stringu jenom prázdno?

radas
Člen | 225
+
0
-

Mohu potvrdit, že v Nette 2.1-dev (2013–12–05) to ještě fungovalo. Přešel jsem na ostrou verzi 2.1.0 a tam se opravdu do atributu src nic nedoplní.

Robyer
Člen | 74
+
0
-

Zkuste přidat ještě modifikátor |nosafeurl. V Nette 2.3.0 je automatická ochrana, která dovoluje mít v href, src a podobných atributech pouze http nebo ftp odkazy. Zřejmě proto to nedovolí ten base64 řetězec.

mardon
Člen | 59
+
0
-

Robyer napsal(a):

Zkuste přidat ještě modifikátor |nosafeurl. V Nette 2.3.0 je automatická ochrana, která dovoluje mít v href, src a podobných atributech pouze http nebo ftp odkazy. Zřejmě proto to nedovolí ten base64 řetězec.

potvrzuji pokud upravím na

<img src="{$image|dataStream|nosafeurl}">

obrázek se již zobrazí.

Nicméně v aplikaci dám na doporučení a do šablony budu posílat cestu k souboru s obrázkem.