PHP从上传的文本文件中读取?

Posted

技术标签:

【中文标题】PHP从上传的文本文件中读取?【英文标题】:PHP read from uploaded text file? 【发布时间】:2011-01-13 04:04:01 【问题描述】:

如果我通过表单上传文本文件,是否可以直接从 $_FILES 变量输出其内容,而不是先将其保存到服务器上?我知道这是一个安全风险,但它只会在本地机器上运行。

任何建议表示赞赏。

谢谢。

【问题讨论】:

【参考方案1】:

在做

file_get_contents($_FILES['uploadedfile']['tmp_name']); 

是有效的,但是您还应该检查以确保文件是通过表单上传的,并且在上传过程中没有发生错误:

if ($_FILES['uploadedfile']['error'] == UPLOAD_ERR_OK               //checks for errors
      && is_uploaded_file($_FILES['uploadedfile']['tmp_name']))  //checks that file is uploaded
  echo file_get_contents($_FILES['uploadedfile']['tmp_name']); 

一个有用的链接是http://us2.php.net/manual/en/features.file-upload.php

【讨论】:

嗨,我为什么要通过 is_uploaded_file 检查文件?有什么安全问题吗?它会导致什么问题?你能向我解释一下或提供一些帖子链接吗?谢谢【参考方案2】:

文件在上传的那一刻保存到临时目录,但您可以使用$_FILES['uploadedfile']['tmp_name'] 读取它,而无需保存在永久位置。

【讨论】:

Doh,我一直在这样做,但 html 在页面上是不可见的。我使用的是 chrome,所以当我点击查看源代码时,它向我显示了一个重新加载的页面版本,其中文本文件尚未加载:)【参考方案3】:

很遗憾,没有。至少不是通过 $_FILES 变量。对不起。

编辑:它始终保存为 $_FILES 中的临时文件,您必须始终使用该文件作为内容。

【讨论】:

好的,好的,当我知道答案是坏消息时,我不会发布! 这个答案是完全正确的,因为这个问题专门询问了 $_FILES 变量,但我认为其他答案对于帖子似乎要问的内容是正确的! 是的,就像 Lukos 说的,你弄错了,“不幸的是,不”是不正确的。您可以从上传的文件中获取内容而不保存它

以上是关于PHP从上传的文本文件中读取?的主要内容,如果未能解决你的问题,请参考以下文章

用 php 读取纯文本文件

创建一个从数据馈送中读取文本文件并将其转换为 php 的目标文件的函数

如何使用PHP读取文本文件内容

php fread()函数读取文本直到文件尾却无法结束

Autodesk Forge 从文本文件中读取

通过 PHP FTP PUT 将文本文件上传到 Google 上传