首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理PHP生成的CSV文件的上传和下载

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

Stack Overflow用户
提问于 2014-09-09 02:45:24
回答 1查看 72关注 0票数 0

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

代码语言:javascript
复制
$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的符号链接吗?怎样才是最好的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2014-09-09 03:31:25

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

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

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

创建某种“dispatcher”:这基本上是一个PHP文件,它接收请求,验证它(确保删除任何非法字符,特别是点和斜杠!)如果文件存在,则返回该文件。

然后找到一种方法来告诉合法用户文件名。这可以通过返回该名称(或下载URL)来完成,而不是通过PHP请求返回文件内容。或例如通过电子邮件。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25731029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档