使用 php 创建并下载文本文件

2024-04-08

这就是我正在尝试做的事情。我有一系列报告,他们也希望能够以逗号分隔的文本文件形式下载。我读过很多页面,人们说只是回显结果而不是创建文件,但是当我尝试它时,它只是输出到他们所在的页面。

我在每份报告中都有这个

Export File<input type="checkbox" name="export" value="1" />

因此,在帖子中我可以检查他们是否正在尝试导出文件。如果他们是我正在尝试这样做:

if($_POST['export'] == '1')
{
    $filename = date("Instructors by DOB - ".$month) . '.txt';

    $content = "";

    # Titlte of the CSV
    $content = "Name,Address,City,State,Zip,DOB\n";

    for($i=0;$i<count($instructors);$i++)
        $content .= ""; //fill content

    fwrite($filename, $content);

    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Length: ". filesize("$filename").";");
    header("Content-Disposition: attachment; filename=$filename");
    header("Content-Type: application/octet-stream; "); 
    header("Content-Transfer-Encoding: binary");

    readfile($filename);
}

基本上页面刷新了,但是没有文件推送下载。谁能指出我缺少什么?

EDIT我想我还没有完全说清楚。这不是在仅创建和下载文件的页面上,而是在还显示报告的页面上。所以当我输入 exit(); 时读取文件后,页面的其余部分加载为空白。我还需要在此页面上显示报告。我认为这也可能与为什么不下载有关,因为该页面已经发送了标头信息。


在要求您尝试关闭文件之前,我忽略了您写出内容的方式。

在这里查看 fwrite 手册:http://php.net/manual/en/function.fwrite.php http://php.net/manual/en/function.fwrite.php

你需要做的是:

$filename = "yourfile.txt";
#...
$f = fopen($filename, 'w');
fwrite($f, $content);
fclose($f);

关闭文件后,您现在可以安全地将其发送以供下载。

header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; "); 
header("Content-Transfer-Encoding: binary");

readfile($filename);

有几件事:

  • 您确实不需要将内容类型设置为application/octet-stream。为什么不设置一个更真实的类型作为text/plain?
  • 我真的不明白你想如何使用日期功能。请参阅此处的手册:http://php.net/manual/en/function.date.php http://php.net/manual/en/function.date.php
  • 正如 @nickb 正确指出的那样,您必须在执行以下操作后退出脚本readfile(..)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 php 创建并下载文本文件 的相关文章

  • 如何解决“无法加载PEM客户端证书,OpenSSL错误:02001003:系统库:fopen:没有这样的进程”错误?

    如果这个问题很愚蠢 请原谅 但我是这个领域的新手 我需要通过 SSL 从 Drupal 7 站点连接到服务 我有一个扩展名为 p12 的文件及其密码 另外 我使用 PHP 7 1 1 和 Windows 7 64x 我使用以下命令将 p12
  • 如何从 PHP 中的字符串创建可能的字符串组合?

    如何从 PHP 中的字符串创建可能的字符串组合 Exp input abc output array 0 gt a 1 gt ab 2 gt abc 3 gt ac 4 gt acb 5 gt b 6 gt ba 7 gt bac 8 gt
  • PHP 启动:无法加载动态库 php5.4.3/ext/php_ffmpeg.dll 不是有效的 Win32 应用程序

    再会 我尝试在 Windows 7 计算机上安装 dll 文件 php ffmpeg 但不断收到此错误 29 Jan 2013 11 37 00 UTC PHP Warning PHP Startup Unable to load dyna
  • node-mongodb-native的插入性能

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

    Laravel 错误 cron 使用 usr bin php home sitevk artisan 计划 运行 1 gt gt dev null 2 gt 1 应用 控制台 内核 use Illuminate Console Schedu
  • 无法在 Laravel 8 中运行迁移:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: 名称或服务未知 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我不明白为什么我的迁移在全新安装 Laravel 8 时失败 这就是我得到的结果 Illuminate Database
  • 这是依赖注入吗?这是一种不好的做法吗?

    我有一个小框架 我是这样编码的 我不确定这是否称为依赖注入 我不知道它是否像设计模式 我也不知道并且想知道是否通过 this因为 param 是一种不好的做法 看看这个 不是一个有效的示例 只是将这些代码写入浏览器中以供解释 This is
  • 如何使用 AJAX/jQuery 显示打印内容?

    所以我试图理解整个 AJAX jQuery 的事情 现在 当我单独运行这个 PHP 脚本时 我必须等待并观察轮子旋转 直到循环完成然后加载 while row mysql fetch array res postcode to storm
  • 动态创建和下载Doc文件

    因此 我尝试动态创建 doc 文件并让用户在单击按钮时下载该文件 这些是我找到的用于下载文件的标头 header Content Description File Transfer header Content Type applicati
  • 将具有值的产品属性添加到 Woocommerce 中的产品

    我正在使用此代码添加自定义属性 attributes array array name gt Size options gt array S L XL XXL position gt 1 visible gt 1 variation gt
  • laravel 5.3 新的 Auth::routes()

    最近开始使用laravel 5 3写博客 但是运行后出现一个问题php artisan make auth 当我运行这个时 它会在我的web php 这是其中的代码 Auth routes Route get home HomeContro
  • 从 PHP 生成渐变颜色

    我想知道如何构建一个给出颜色代码和 显示该颜色的渐变 例如 function generate color int colorindex Generate 10 pale colors of this color 请帮我 迈克尔引用的代码相
  • 检查一个类是否是另一个类的子类

    我想在不创建实例的情况下检查一个类是否是另一个类的子类 我有一个类 它接收类名作为参数 作为验证过程的一部分 我想检查它是否属于特定的类系列 以防止安全问题等 有什么好的方法可以做到这一点吗 is subclass of http php
  • PHPMailer 验证失败

    当我尝试在工作中使用 Windows Server 2012 上的 PHPMailer 来使用 SMTP 发送报告电子邮件时 出现身份验证失败错误 我在域上使用服务器管理员帐户 我非常确定密码是正确的 检查下面的代码 require PHP
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • Doctrine2:入门教程“没有要处理的元数据类”

    我已经将本教程的第一部分运行了三遍 到目前为止 在这里或其他地方进行的大量搜索都无法帮助我使其发挥作用 我收到 没有要处理的元数据类 当我尝试时 php vendor bin doctrine orm schema tool update
  • shell_exec 的输出被截断为 100 个字符

    当在 shell 中运行以下命令时 curl F file filename http 192 168 0 1 产生以下输出 Accuracy 0 0 1 classification Accuracy 0 0 1 classificati
  • 使用 PHP 将 SVG 图像转换为 PNG

    我正在开发一个网络项目 该项目涉及动态生成的美国地图 根据一组数据为不同的州着色 这个 SVG 文件为我提供了一张很好的美国空白地图 并且很容易更改每个州的颜色 困难在于 IE 浏览器不支持 SVG 因此为了让我使用 svg 提供的便捷语法
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • preg_match 所有以@开头的单词?

    我对正则表达式不太确定 所以我不得不问你 如何用 PHP 判断字符串中是否包含以 开头的单词 例如我有一个像 This is for codeworxx 这样的字符串 我很抱歉 但我没有任何起点 希望你能帮忙 谢谢 萨沙 好的 谢谢你的结果

随机推荐

  • 自定义 QML 模块部署到 Android:缺少 QML 依赖项

    我正在开发一个包含一些特殊类型的自定义 QML 模块 我们称之为 MyModule 它用作其他应用程序项目的预编译库 即源代码对它们不可用 它通过 import MyModule 1 0 设置必要的导入路径等来使用 该模块包含基于 C 的
  • 过渡导航栏标题

    在一个名为 Luvocracy 的应用程序中 当用户在屏幕上向上滑动时 导航栏的标题会发生变化 旧标题被推高 而新标题则过渡进来 我现在没有视频 但这里有一些屏幕截图 https www dropbox com s sns0bsxkdv7p
  • 安全存储客户端敏感数据

    背景故事我在一家中小型公司工作 我们正在重新设计面向客户的会计门户 我的经理希望使用存储在最终用户计算机上的 cookie 中的信用卡信息来进行单击付款选项 我根本不喜欢这个想法 事实上我仍在努力改变他的想法 话虽这么说 我正在努力使其尽可
  • 如何在 alpine.js 应用程序中制作具有时间间隔的计时器

    使用 alpine js 2 我尝试在应用程序的页脚 为所有布局设置 中定义计时器 div div div span style background color yellow span div div div
  • 如何查看浏览器请求?

    我正在与另一位程序员合作 他最近向我发送了一个新的基于 JSON 的 API 来工作 他说我可以通过访问特定网站并查看浏览器请求来查看所有 API 调用的示例 我的问题是 如何查看我的浏览器请求 我之前曾使用 Wireshark 来分析我的
  • JAVA ANDROID - 获取文件夹的文件列表

    我想在一个文件夹中显示不同文件夹的图像GridView 但我不知道需要做什么才能获取包含可绘制文件夹内的文件名称的列表 此方法将为您提供一个包含 dir 文件夹列表以及子文件夹列表的列表 public void listf String d
  • 从调用者类停止异步 Spring 方法

    我有一个类调用 Rest Web 服务来从服务器接收文件 在传输字节时 我创建了一个异步任务 它检查与服务器的连接是否正常 以便在出现错误时允许停止连接 这个异步任务有一个我必须停止的循环 Component public class Co
  • POJO 反序列化期间忽略 @JsonTypeInfo 属性

    我使用 JsonTypeInfo 指示 Jackson 2 1 0 在 鉴别器 属性中查找具体类型信息 这很有效 但在反序列化期间 鉴别器属性没有设置到 POJO 中 根据 Jackon 的 Javadoc com fasterxml ja
  • CMake 未从 conan 中找到 boost 库

    所以我试图让我的 cmake 与 conan boost 一起工作 为此 我有一个简单的柯南文件 from conans import ConanFile class Boost Conan Cmake MinimalConfig Cona
  • 迭代Python字典并特殊追加到新列表?

    我想迭代字典 并将按其值 频率 重复的每个键 字母 附加到新列表中 例如 输入 A 1 B 2 预期输出 A B B 我正在做的事情不起作用 我应该在函数中写什么来做到这一点 def get freq dict freq dict J 1
  • 批处理文件中的文件时间超过 4 分钟

    我正在使用这个脚本来计算文件的时间 set filename myfile txt rem extract current date and time for f tokens 1 5 delims a in date time do se
  • 反应路由器路径内的问号

    我正在尝试在 URL 中传递参数 但读取时遇到问题 我正在使用反应路由器 v4 URL http localhost 3000 reset token 123 http localhost 3000 reset token 123我试着这样
  • 带有react-router-dom NavLinks的react-bootstrap导航栏中的collapseOnSelect

    我正在制作一个网站 在其中使用 React router dom NavLink 组件来防止单页面应用程序体验的重新渲染 当我试图使网站响应时 我一直在尝试使响应式导航栏在选择 NavLink 后从 React Bootstrap 折叠 但
  • 插入 Base64 图像作为 WordPress 帖子附件

    我正在将画布转换为 base64 png 图像 现在我想将此图像添加为帖子附件 这是我在服务器端的图像 image base64 decode preg replace data image w base64 i data pdf thum
  • 使用php脚本在csv文件中插入图像[重复]

    这个问题在这里已经有答案了 可能的重复 PHP代码可以将图像插入Excel文件并在MS Excel中正确打开它吗 https stackoverflow com questions 11337142 php code can insert
  • 函数 sum 无法正常工作 javascript [重复]

    这个问题在这里已经有答案了 当我添加两个字段时 代码不会对其进行求和 而是添加我输入的内容 这是我的代码 function calculate loan var amountBorrowed document form amountBorr
  • ElasticSearch 脚本:检查数组是否包含值

    假设我创建了一个这样的文档 PUT idx type 1 the field 1 2 3 我可以使用 GET idx type 1 检索我的文档 index idx type type id 1 version 1 found true s
  • 如何获取基于Keras的LSTM模型中每个epoch的一层权重矩阵?

    我有一个基于 Keras 的简单 LSTM 模型 X train X test Y train Y test train test split input labels test size 0 2 random state i 10 X t
  • Perl 的 print_r() 相当于什么?

    我发现 PHP 中的 print r 非常有用 但想知道 Perl 中是否有远程等效的东西 注意 tchrist推荐数据 转储 http search cpan org gaas Data Dump 1 21 lib Data Dump p
  • 使用 php 创建并下载文本文件

    这就是我正在尝试做的事情 我有一系列报告 他们也希望能够以逗号分隔的文本文件形式下载 我读过很多页面 人们说只是回显结果而不是创建文件 但是当我尝试它时 它只是输出到他们所在的页面 我在每份报告中都有这个 Export File