Přesunutí obrázku nefunkční

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

Ahoj, nefunguje mi přesunutí obrázku do složky, nevíte čím to může být? Pokud tu adresu zadám relativně, tak to funguje, ale není to použitelné pro všechny presentery.

$filename = $this->getUser()->identity->data['username'];
$targetPath = $this->getHttpRequest()->getUrl()->getBasePath();


$pripona = pathinfo($values['img']->getSanitizedName(), PATHINFO_EXTENSION);
$cil=$targetPath."images/location/$filename.$pripona";
$values['img']->move("$cil");
PavelS
Člen | 66
+
0
-

Pokud to tam přesunu ručně, z $cil se mi obrázek načte.

CZechBoY
Člen | 3608
+
0
-

To je nějaký divný… proč to přesouváš podle URL a ne podle cesty ve filesystemu?
Předej si %wwwDir% do parametru tý služby.

config.neon

services:
	- App\MojeSluzba(%wwwDir%)
PavelS
Člen | 66
+
0
-

Díky za odpověď, můžeš mi poradit, jak upravit ten kód?

GEpic
Člen | 566
+
0
-

A zkusil si použít jen toto?

$cil="images/location/$filename.$pripona";
$values['img']->move($cil);

Automaticky by ti to mělo zapsat do složky www/images/location/
Používám to také tak, navíc ve službě a funkci na přidání souboru můžu volat odkudkoliv.

Editoval GEpic (19. 2. 2016 19:41)

Martk
Člen | 661
+
+1
-

Znovupoužitelná třída:

class Uploader {

	/** @var string */
	private $wwwDir;

	public function __construct($wwwDir) {
		$this->wwwDir = $wwwDir;
	}

	public function upload(Nette\Http\FileUpload $file, $path) {
		$file->move($absolute = $this->wwwDir . '/' . $path);

		return $absolute;
	}

}

Registrace:

services:
	- Uploader(%wwwDir%)

Použití:

class MyClass {

	private $uploader;

	public function __construct(Uploader $uploader) {
		$this->uploader = $uploader;
	}

	public function myFunction() {
		$filename = $this->getUser()->identity->data['username'];
		$pripona = pathinfo($values['img']->getSanitizedName(), PATHINFO_EXTENSION);

		$this->uploader->upload($values['img'], "images/location/$filename.$pripona");
	}

}

Editoval Antik (19. 2. 2016 20:36)