php - 如何处理上传和下载 PHP 生成的 CSV 文件

标签 php linux

我正在运行以下代码(略有缩写)以在屏幕上呈现 MySQL 查询并将每一行存储到存储在/tmp/中的 csv

$fileName = $username . date('Ymdhis') . '.csv';
$fp = fopen('/tmp/' . $fileName, 'w');

while ($row = $result->fetch_assoc()) 
        {
        if ($count % 2 == 0)
                {
                echo "blah";
                fputcsv($fp, $row);
                $count++;
                }
        else
                {
                echo "blah 2";
                fputcsv($fp, $row);
                $count++;
                }


        }
fclose($fp);

工作正常,没有投诉。现在文件存储在/tmp 中,我想创建一个指向它的 html 链接,以便可以从同一页面下载它。我知道足以将 .csv 保留在 www 文档根目录之外,但是从/tmp 检索此文件的最安全方法是什么?我应该设置一个从 www 到/tmp 的符号链接(symbolic link)吗?如何最好地接近?

最佳答案

首先,如果您将文件从文档根目录符号链接(symbolic link)到 /tmp,您也可以直接将其放入文档根目录。

如果您说该文件是 secret 文件,但必须可以下载,您可以执行以下操作:

将具有非常长且随机文件名的文件(如 pvYLLHuGmnJnQ3LBkanQky8oh6eUkhH.csv)存储在文档根目录之外的目录中。

创建某种“调度程序”:这基本上是一个 PHP 文件,它接受请求、验证它(一定要删除任何非法字符,尤其是点和斜杠!)并返回文件(如果存在)。

然后想办法告诉合法用户文件名。这可以通过返回该名称(或下载 URL)而不是作为 PHP 请求结果的文件内容来完成。或者例如通过电子邮件。

这当然是一种相当简单的方法,但对于大多数情况来说应该足够安全。顺便说一下,确保使用 HTTPS 进行传输,否则这一切都没有意义。

关于php - 如何处理上传和下载 PHP 生成的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25731029/

相关文章:

javascript - 上传文件的同时您继续与网站交互

c++ - Qt4.8嵌入。使用 QCursor::setPos() 调整鼠标输入会导致光标移动

linux - 如何在退出时删除/取消链接文件

c - 哪些可用的 GNU C 扩展在 C99 中实现起来并非易事?

php 编辑带有上传图像的条目

php - 自动注册后用户身份验证

javascript - 从 Google Places 搜索框获取纬度和经度

php - 更安全的加密方式

c++ - 签名 :ness optimization "bug" in gcc

linux - 如何构建延迟/缓冲管道?