auf einem bestimmten Blick, wenn ich um diesen Link:CakePHP 3 - Herunterladen unabhängig von den Host-und Projektnamen
<?php echo $this->Html->link('Download', ['controller' => 'Uploads', 'action' => 'download',$upload->id]) ?>
Ein Benutzer eine Datei herunterladen kann basierend auf den $upload->id
zur Verfügung gestellt.
Ich verwende dies als meine Download-Funktion in meinen Uploads Controller:
$upload = $this->Uploads->find('all')->first();
$filePath = '\xampp\htdocs\project\webroot\uploads'; //file path to where the uploaded file is
$this->response->file($filePath . DS . $upload->name,
array('download' => true, 'name' => $upload->name)); //finds the corresponding name attribute in the Uploads table of the database, finds a matching name in the uploads directory and then downloads that file.
$this->set(compact('upload'));
Aber ich frage mich, ob es eine Möglichkeit, den Dateipfad flexibler sein müssen, um in der Lage war. In meinem config.php
, habe ich zwei Variablen mit den Namen $host
und $basepath
auf den Web-Host (localhost) bzw. den Projektnamen (Projekt) verweisen festgelegt. Ich übergebe diese Variablen an den AppController und auf sie kann von jeder View aus zugegriffen werden.
Aber ich kann nicht diese Variablen in der $filePath
Variable der Download-Funktion zu nutzen scheinen, also wenn ich oder jemand anderes waren Hosts oder den Projektnamen ändern, sondern können einfach zu sein config.php
ändern, ich oder irgendjemand Sonst müsste ich das finden und es auch ändern (und wenn ich mehrere Download-Funktionen in mehreren Controllern hätte, müssten sie gehen und jeden von ihnen ändern).
Haben Sie meinen Sie auf einfacher Weise Dateipfad Pfad zur Verfügung stellen möchten? In diesem Fall können Sie die Basis-URL verwenden oder den Pfad als Konstante definieren. –