在我的项目中,我需要将一些文件移到webroot文件夹之外(原因:安全问题)。但是我不知道如何配置显示图像,或者下载文件,这些文件不在webroot文件夹中。文件夹层次结构:
成功上传文件到服务器后,我需要保存指向数据库中文件的相对链接。在上面的文件夹层次结构中,如何保存相对链接格式?并在客户端中显示图像
Cakephp在框架中内置了媒体视图。您可以从私有文件系统位置提供这些文件
public function download() {
$this->viewClass = 'Media';
// Download app/outside_webroot_dir/example.zip
$params = array(
'id' => 'example.zip',
'name' => 'example',
'download' => true,
'extension' => 'zip',
'path' => APP . 'outside_webroot_dir' . DS
);
$this->set($params);
}
参考:媒体观点
您应该首先上传文件,然后将文件名保存在数据库中。这可以确保您在想要从媒体视图访问文件时拥有该文件的名称。您应该保存文件类型(扩展名)。这可以在您的业务逻辑中使用,以决定您是否要强制下载文件或流内容到浏览器(“下载”=
如果你使用蛋糕2.3也考虑发送文件
RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (\.png|\.jpg)$ app/your folder/images/$1 RewriteRule (\.mpg)$ app/your folder/videos/$1 RewriteRule (\.mp3)$ app/your folder/audios/$1 RewriteRule (.*) app/webroot/$1 [L]
将首先应用任何匹配的规则。但我不认为这个解决方案更适合你。