在 CakePHP 中使用媒体视图下载文件

2024-02-23

我想通过 4 个不同的链接下载 4 个不同的文件。我正在使用媒体视图下载文件,但我必须在控制器的下载功能中对文件名进行硬编码:

function download () { 
    $this->view = 'Media'; 
    $params = array( 
          'id' => 'example.zip', 
          'name' => 'example', 
          'download' => true, 
          'extension' => 'zip', 
          'path' => APP . 'files' . DS 
   ); 
   $this->set($params); 
} 

这对于一个文件来说效果很好。现在,对于 2、3、4 号链接,我是否需要创建 3 个不同的操作并在其中指定不同的文件名,或者是否有一种方法可以使用 download() 根据哪个链接仅下载相应的文件已被点击?


这就是变量的用途。通用示例:

function download($fileId) {
    $file = // find the file you want to serve based on $fileId
    $pathInfo = pathinfo($file['path']);

    $this->view = 'Media'; 
    $params = array( 
          'id'        => $file['name'],
          'name'      => $pathInfo['filename'], 
          'extension' => $pathInfo['extension'], 
          'download'  => true, 
          'path'      => APP . 'files' . DS 
   ); 
   $this->set($params); 
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CakePHP 中使用媒体视图下载文件 的相关文章

  • 从移动版本切换到完整网站(桌面版本)

    我使用此代码将用户从桌面版本引导到我的移动网站
  • 非加密用途的最快哈希值?

    我本质上是在准备要放入数据库的短语 它们可能格式错误 所以我想存储它们的简短散列 我将简单地比较它们是否存在 所以散列是理想的 我假设 MD5 在处理 100 000 个请求时相当慢 所以我想知道散列短语的最佳方法是什么 也许推出我自己的散
  • 数组匹配值过滤器 PHP [重复]

    这个问题在这里已经有答案了 我尝试在数组中搜索 但根本没有得到任何结果 假设我有一个包含一些值的数组 所以当我想搜索它们时 它总是返回 null 不知道为什么 假设这是我的数组 data Array 0 gt Array id gt 122
  • 防止隐藏的输入被更改

    这一直让我压力很大 我有一个隐藏的输入
  • 尝试通过比较不同的表从 SQL 查询输出正确的值

    我对 SQL 非常陌生 需要有关如何使用正确的查询完成此任务的帮助 我有 2 张桌子需要使用 表 TB1 有 id Name 1 bob 2 blow 3 joe 表 TB2 有 compid property 1 bob 2 blow 我
  • 如何将从 date_parse 返回的日期数组转换回日期字符串

    我有一个由 php 例程 date parse 返回的格式的日期数组 我需要将此日期数组转换回日期字符串 我正在寻找一个与 date parse 例程相反的函数 这是一个接受日期数组作为参数并返回日期字符串的函数 http php net
  • PHP MySQL 查询带有 %s 和 %d

    SELECT COUNT AS test FROM s WHERE id d AND tmp mail lt gt 什么是 s and d for 这些是使用的格式符号 例如经过sprintf 例子 Output SELECT COUNT
  • 将数组数据从 html 表单传递到 php 数组变量

    我有一张表格来记录一组项目的工作时间 该表单使用项目 ID 小时数和注释字段的数组 表单行是项目数量的循环 该表单将数据传递给 PHP 脚本进行处理 PHP 脚本没有看到数组中的值 它只是给我 Array 作为输出 文档和其他示例让我想知道
  • 如何在 Laravel 5 中通过键获取所有缓存项的列表?

    Laravel 中的 Cache 类具有 get itemKey 等方法来从缓存中检索项目 以及 Remember itemKey myData1 myData2 来将项目保存在缓存中 还有一个方法可以检查缓存中是否存在某个项目 Cache
  • mysqli::real_connect 和 new mysqli 对象在连接数据库方面有什么区别?

    我正在使用这种方法连接到mysql db this gt Con new mysqli this gt DB Server this gt DB User this gt DB Pass this gt DB DB 当我使用这种方法连接时有
  • Woocommerce 中的欧洲 GDPR 附加结帐验证复选框

    您好 我一直在尝试向我的 Woocommerce 结帐页面添加一个额外的条件复选框 该复选框与条款和条件相同 但包含有关新 GDPR 数据保护 的信息以及指向我的隐私政策的链接 他们必须在方框中打勾才能结帐 我一直在使用从此处找到的各种代码
  • PHP file_exists() 对我不起作用?

    由于某种原因 下面的 PHP 代码将无法工作 我无法弄清楚 很奇怪的是 file exists 似乎没有看到图像确实存在 我已经检查以确保将良好的文件路径插入到 file exists 函数中并且它仍在运行 如果我将 file exists
  • 在 PHP 中添加分数会产生不同的结果[重复]

    这个问题在这里已经有答案了 可能的重复 PHP float 到 int 类型转换的意外结果 https stackoverflow com questions 3385685 php unexpected result of float t
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的
  • CakePHP - 获取上次运行的查询

    我想获取 CakePHP 运行的最后一个查询 我无法在 core php 中打开调试 也无法在本地运行代码 我需要一种方法来获取最后一个 sql 查询并将其记录到错误日志中而不影响实时站点 该查询失败但正在运行 像这样的事情会很棒 this
  • foreach 循环中 current() 的意外行为[重复]

    这个问题在这里已经有答案了 这是一个简单的循环 list array A B C D foreach list as var print current list Output demo http 3v4l org sBDjl BBBB O
  • 在 wampserver 2.2 上安装 php_imagick.dll PHP 扩展

    我使用的是 32 位操作系统的 Windows 7 我安装了 ImageMagick 6 8 7 Q16Link https www imagemagick org script download php windows我能够从命令行 转换
  • 具有挑战性的问题 - 使用 PHP 对 XML 数据进行排序

    我有 xml 文件 其中包含大量产品数据 我需要根据我的字段 ProductRange 的数据对我的产品进行排序 ProductRange urldecode GET Range XML 文件数据
  • 为什么我的浮点数大于 1 时在 MYSQL 中存储为 .9999?

    我将进程时间作为 float 4 4 存储在 MySQL 数据库中 start time microtime TRUE things happen in my script end time microtime TRUE process t
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它

随机推荐

  • Rails:更改生产数据库的最佳方法

    我需要对正在使用的生产数据库进行更改 只需添加几列即可 我已经通过迁移对开发数据库进行了更改 在保留现有数据且不会过多干扰操作的情况下更新生产数据库的最佳方法是什么 它是 MYSQL 我还需要向列添加数据以及现有记录 一列可以有默认值 它是
  • 如何在 docker 容器内使用 nginx 提供静态文件?

    因为我运行的是 Mac OSX 所以我使用 boot2docker 我不知道如何使用在 docker 容器内运行的 nginx 也包含静态资产 如我的 html 和 js 提供静态文件 我有四个 docker 容器正在与此一起旋转docke
  • 存储库模式实现

    似乎我找到的存储库模式的每个示例 其实现都在某种程度上有所不同 下面是我主要找到的两个例子 interface IProductRepository IQueryable
  • 由于 Xcode 11 中不再包含应用程序加载器,如何上传 IPA

    我有点害怕问这个问题 因为这个问题对我来说似乎很大 但我没有看到有人对此感到恐慌 我有点害怕听起来很疯狂 但我会坚持下去 正如我们可以在苹果的帖子中看到的提交更新 https developer apple com app store co
  • 如何在 Angular 2 中使用 Less?

    我想知道如何在我的 Angular 2 项目中添加更少的编译 因为每个组件都有自己的 css 文件 现在将是 less文件 我不确定如何使文件编译为 css 我也用谷歌搜索了这个问题 但没有找到任何解决我的问题的方法 EDIT为了让我的问题
  • 比较字符串 Javascript 返回可能的百分比

    我正在寻找一个 JavaScript 函数 它可以比较两个字符串并返回它们相似的可能性 我看过 soundex 但对于多单词字符串或非名称来说并不是很好 我正在寻找一个类似的函数 function compare strA strB com
  • Foursquare Venue Api:生成“8/10 人喜欢这个地方”的信息

    当查看 FourSquare 页面时 例如 巴黎旺多姆广场 https foursquare com v place vend C3 B4me 4adcda09f964a5200e3421e3 显示文本 9 4 10 人们喜欢这个地方 我想
  • 由于可能的配置错误,请求超出了 10 个内部重定向的限制。?

    我有一个简单的重写 RewriteRule addnew 0 不过我得到了 Request exceeded the limit of 10 internal redirects due to probable configuration
  • c# System.guid 不包含 Parse 的定义

    AT Anchor System Guid Parse DataBinder Eval e Item DataItem Anchor ToString 这会抛出 System Guid does not contain a definiti
  • “clr-namespace”URI 引用未包含在程序集中的命名空间

    我试图在我的 XAML 中包含一些转换值的类 但是 当我编译时 我收到以下错误 未定义的 CLR 命名空间 clr namespace URI 引用未包含在程序集中的命名空间 View Summary Converters View Vie
  • 角度 4 中的动画路线

    我正在尝试以角度 4 为路线过渡设置动画 动画在页面首次加载和页面刷新时起作用 所以我知道动画有效 但在我切换路线时则不然 我缺少什么 这是代码 组件元数据 animations fadeInAnimation 模板 div class r
  • iPhone 开发:初学者资源

    正如标题所说 您有任何可用资源来开始为 iPhone 进行开发吗 书籍 在线资源 工具 开发环境 先决条件以及与iPhone编程相关的一切都会很好 Thanks 假设您是初学者 对于书籍而言 此列表是一个很好的起点 http cocoade
  • 如何选择一定长度的数据项?

    如何选择列中的行以使行大小 例如 身份证号 名字 仅选择名字超过 10 个字符的人 他们的名字太长 如果您必须使用特定的 RDBMS 那么解决方案很简单 Use the LENGTH function 根据您的数据库 长度函数可以是 LEN
  • 在非 boost 线程中使用 boost::thread_specific_ptr

    我正在阅读文档部分boost thread specific ptr http www boost org doc libs 1 55 0 doc html thread thread local storage html 并尝试解析这一段
  • 无法在 Windows 上打印彩色文本

    我是 Python 新手 试图在控制台中打印彩色文本 我的操作系统是windows 10 代码如下 class bcolors Colors for console HEADER 033 95m YGREEN 033 92m WARNING
  • 为什么新的 Pick 类型允许 React 的 setState() 中 K 的子集?

    我以为我明白了新的目的TS 2 1 Pick type https www typescriptlang org docs handbook release notes typescript 2 1 html partial readonl
  • 可变参数列表

    假设我有 2 个函数 void f1 int p1 int v1 AND void f2 int v1 在 f1 内部 我想将所有参数从可变参数列表传递到 f2 void f1 int p1 int v1 f2 pass all varia
  • 升级到 Spring Security 6 后角色层次结构不起作用

    我正在从 spring boot 2 7 x 升级到 3 0 0 按照官方文档中的建议进行更改后 我发现我的角色层次结构没有得到尊重 I added expressionHandler 到我的代码中建议的Spring Security 6
  • 如何在 R Markdown 中从第二页开始页码?

    我想知道是否有一种方法可以从第二页开始页码和 或从第二页开始打印页码R Markdown创建 pdf 输出时 当向文档添加标题页时 这会很有用 Thanks 收到有用的评论后 我通过添加解决了问题 pagenumbering gobble
  • 在 CakePHP 中使用媒体视图下载文件

    我想通过 4 个不同的链接下载 4 个不同的文件 我正在使用媒体视图下载文件 但我必须在控制器的下载功能中对文件名进行硬编码 function download this gt view Media params array id gt e