使用 Yii 下载文件

2023-12-20

我正在使用 Yii 框架,并且我有网站允许管理员上传文本文件或 pdf。现在我想允许用户单击链接并开始下载该文件。这在 Yii 框架内是如何实现的?

我将文件存储在 Yiiapplication/uploads/downloads/test.txt 中。

我已经尝试了在网上找到的以下代码,但它不起作用。

Yii::app()->request->sendFile(Yii::getPathOfAlias('webroot').'/uploads/downloads/23602414.txt','click me');

我是否需要改进它,它下载的只是一个带有 ' 的文本文件<a href=' 这不是文件的原始内容。


如果您不想使用扩展,为什么不尝试创建一个简单的方法来强制下载。

public function downloadFile($fullpath){
  if(!empty($fullpath)){ 
      header("Content-type:application/pdf"); //for pdf file
      //header('Content-Type:text/plain; charset=ISO-8859-15');
      //if you want to read text file using text/plain header 
      header('Content-Disposition: attachment; filename="'.basename($fullpath).'"'); 
      header('Content-Length: ' . filesize($fullpath));
      readfile($fullpath);
      Yii::app()->end();
  }
}

public function actionDownload(){
  $path = Yii::getPathOfAlias('webroot')."/uploads/downloads/23602414.pdf";
  $this->downloadFile($path);
}

并创建链接来下载这些文件

<?php echo CHtml::link('Download file',array('youController/download')); ?>

您可以通过在决定标头类型之前检查文件类型来使内容类型更加灵活来改进此代码。可以是 pdf|txt|jpeg|等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Yii 下载文件 的相关文章

  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  •  
    标记内删除

    我制作了简单的 BBCode 脚本 一切正常 但后来我使用了一个 javascript 库来美化我的代码 pre pre 现在我面临的唯一问题是 br 每行代码后面的标签 pre pre tags 所以问题是我怎样才能删除 br 标记哪些在
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 如何在 Vue.js 中动态构建路由器链接?

    我正在尝试在 Vue js 中执行以下操作 table tr td td tr table
  • C# linq 联合问题

    有人可以解释一下怎么做吗Union在 LINQ 工作中 据说它合并了两个序列并且删除重复项 但是我可以以某种方式自定义重复删除行为吗 假设我希望使用来自the second sequence如果有重复或来自the first sequenc
  • 绘图中的自定义离散色阶

    我想自定义颜色plotly阴谋 这对于连续变量和尺度来说效果很好docs https plot ly r user guide sequential color mappings library plotly plot ly iris x
  • natbib 似乎无法与 pdf_book / rticles 正常工作

    在我的 Rmd 文件中 我引用 bib 文件中的位置如下 让我引用一篇文章 SampleTitle2016 当我 编织当前 时 我想要 tex 文件 其中对文章的引用由 cite citep 或 citet 命令提供 我注意到 如果我在输出
  • 我可以本地化 UIDatePicker 吗?

    我正在尝试本地化 UIDatePicker 苹果的文档说它应该自动检测当前的区域设置 但无论我选择哪种语言 语言都保持不变 我需要做什么 区域设置属性 以及与此相关的所有其他国家 地区特定格式属性 默认为由返回的值当前区域设置 http d
  • 从 s3 读取 .pptx 文件

    我尝试从 Amazon S3 打开 pptx 并使用 python pptx 库读取它 这是代码 from pptx import Presentation import boto3 s3 boto3 resource s3 obj s3
  • 如果我使用 UTF-8 字符集,是否需要对特殊字符使用 HTML 实体?

    我正在开发的一个网站正在从 ISO 切换过来 如果HTML字符集设置为UTF 8 还需要替换吗 等与适当的 HTML 实体 不 像这样的符号 德语元音变音 使用 UTF 8 时 所有其他内容都可以像任何其他字符一样使用 但请注意 有些东西仍
  • 允许强制转换为 void(不是指针),为什么?

    为什么我可以将此向量转换为 void 甚至不是指针 int main std vector
  • 在 C# 中重现小数点的撕裂读取

    眼见为实 任何人都可以重现读取撕裂的小数的程序吗 我尝试旋转多个线程 在 1 和 2 之间更改相同的小数 我没有捕获任何与 1 或 2 不同的读取 我希望看到读取器线程看不到写入器线程的原子更改 因此该值应该与 1 或 2 不同 void
  • 删除方法不适用于 Indexed DB HTML5...它返回成功但记录未删除

    我在使用桌面 Chrome 时遇到的 HTML5 Indexed DB 的另一个问题是我无法从对象存储中删除记录 onsuccess 事件被触发 但记录仍然存在 我的 ID 是一个时间戳 只是因为我想更快地实现一个工作应用程序 我硬编码了它
  • 是否值得在存储卡上安装 Compact Framework?

    随着应用程序的增长 我们的 Windows CE 设备上需要更多空间 我们安装了 SD 卡 从 SD 卡运行我们的应用程序速度很慢 如果从持久路径运行应用程序 则需求分页会出现一些严重问题 我们看到的唯一选择是在 SD 卡上安装 Compa
  • 应用程序包 (.abb) 大小大于 APK (.apk),不应该相反吗?

    代码实际上是相同的 我只是添加了一个类 是不是因为当 Bundle 安装在设备中时 只有一部分会转到该设备 并且它的大小会更小 来自docs https developer android com platform technology a
  • 运行 babel 时,方法的 JSdoc 在转译代码中丢失

    我正在使图书馆变得更加用户友好 让消费者在使用图书馆时看到文档 我有一个在构建时运行的脚本 babel src out dir dist quiet 这是我的 babelrc presets es2015 loose true module
  • 在具有 16 位 PCM 的 iOS 中生成音调,AudioEngine.connect() 会抛出 AUSetFormat:错误 -10868

    我有以下代码用于生成给定频率和持续时间的音频 它大致基于在 Android 上执行相同操作的这个答案 感谢 Steve Pomeroy https stackoverflow com a 3731075 973364 https stack
  • jquery 查找所有精确的 td 匹配

    servertable td eq server 这仅找到 1 个 我认为是第一个 匹配项 如何找到所有匹配项 顺便提一句 td contains 对我不起作用 eq期望数字索引仅返回一行 如果你想通过 td 的内容来匹配它 你必须使用 包
  • HBase 中类似 SQL LIMIT 的命令

    HBase 有没有类似的命令SQL LIMIT query 我可以这样做setStart and setEnd 但我不想迭代所有行 在 HBase shell 中 您可以使用 LIMIT hbase gt scan test table L
  • iPhone - 无法在 iOS 5.0.1 设备上从 XCode 运行应用程序,因为 iOS 从 5.0 更新

    我刚刚将 iPhone 更新到 iOS 5 0 1 XCode 不再将其识别为运行应用程序的有效设备 我已经去找组织者 将设备重置为开发设备 更新了我的组件和库 但仍然没有任何结果 该设备没有出现在主窗口弹出窗口的可用目的地中 我该如何在设
  • 我的免费送货是在加税后计算的

    我尝试设置 50 美元免运费 但当我添加总计达到 47 00 美元的产品时 税费将被取消并允许免运费 我不敢相信这是标准的 所以我一定有什么设置错误 我在联邦快递 FedEx 和美国邮政 USPS 承运商下设置了免费送货服务 我在配置 销售
  • Spring Boot IMAP 通道适配器在处理大量入站电子邮件时丢失电子邮件

    我有一个正在运行的 Spring boot 应用程序 它正在处理来自专用邮箱的电子邮件 当电子邮件数量有限时 在测试环境中一切都运行良好 在生产环境中 这些电子邮件是由计划作业生成的 有时一批中会有超过 10000 封电子邮件 每封电子邮件
  • 使用 Yii 下载文件

    我正在使用 Yii 框架 并且我有网站允许管理员上传文本文件或 pdf 现在我想允许用户单击链接并开始下载该文件 这在 Yii 框架内是如何实现的 我将文件存储在 Yiiapplication uploads downloads test