Le visualizzazioni multimediali sono obsolete dalla versione 2.3. Dovresti usare invece Sending files.
Dai un'occhiata a questo esempio minimo nel controller:
public function download($id) {
$path = $this->YourModel->aMagicFunctionThatReturnsThePathToYourFile($id);
$this->response->file($path, array(
'download' => true,
'name' => 'the name of the file as it should appear on the client\'s computer',
));
return $this->response;
}
Il primo parametro di $this->response->file
è relativo alla directory APP
. Pertanto, chiamando lo $this->response->file('someFolder' . DS . 'someFile.zip')
verrà scaricato il file APP/someFolder/someFile.zip
.
"L'invio di file" richiede almeno CakePHP versione 2.0. Si prega inoltre di prendere in considerazione il link Cookbook sopra.
se si esegue una versione precedente di CakePHP si dovrebbe usare media Visualizzazioni come già citato nella sua interrogazione. Utilizzare questo codice e fare riferimento a Media Views (Cookbook).
Ecco lo stesso metodo per le versioni precedenti:
public function download($id) {
$this->viewClass = 'Media';
$path = $this->YourModel->aMagicFunctionThatReturnsThePathToYourFile($id);
// in this example $path should hold the filename but a trailing slash
$params = array(
'id' => 'someFile.zip',
'name' => 'the name of the file as it should appear on the client\'s computer',
'download' => true,
'extension' => 'zip',
'path' => $path
);
$this->set($params);
}
Se si utilizza Apache, è possibile forzare scaricare con l'aggiunta di un '.htaccess' all'interno della directory 'download'. Vedi alcuni esempi qui: http://www.givegoodweb.com/post/30/forcing-a-download-with-apache-and-htaccess e http://www.timewasters-place.com/how-to-force -file-download-with-htaccess/In questo modo non è necessario servire i file per scaricare tramite PHP – thaJeztah
Cosa ne pensi di metterli su APP_DIR/webroot/someFolder /? – SaidbakR
@ sємsєм Hai ragione (non ho notato che i file non erano all'interno del webroot). Sebbene solo inserirli in una directory pubblica non li forzerà automaticamente a scaricare (ad esempio se il file è JPG). Aggiungendo un .htaccess che invia intestazioni di "download", sarà più facile per le persone "scaricare" i file invece di visualizzarli * all'interno del browser. Sebbene sia possibile visualizzare PHP (vedere la risposta sotto), questo non è sempre l'ideale, specialmente per i file di grandi dimensioni. – thaJeztah