.txt PHP文件上传txt扩展名?

时间:2011-02-17 00:23:43

标签: php html upload filter text-files

我在php上进行文件上传。 .txt是上传过滤器的有效扩展吗?如果是这样,我可以看一个例子吗?

编辑:对不起,我不太清楚。我的意思是我只希望用户能够上传.txt文件,这就是全部。

3 个答案:

答案 0 :(得分:2)

任何内容都有效,直到您在上传文件时无效为止。使用此代码,您将看到哪些属性使PHP的文件处理打勾:

<强> upload.html

<html>
  <head>
    <title>Upload a File</title>
  </head>

  <body>
    <form action="upload_file.php" method="post" enctype="multipart/form-data">
      <label for="file">Filename:</label>
      <input type="file" name="file" id="file" /> 

      <br />

      <input type="submit" name="submit" value="Submit" />
    </form>
  </body>
</html>

<强> upload_file.php

<?php
if ($_FILES["file"]["error"] > 0)
  {
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
  } else {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

我不确定你在问什么,所以稍微澄清就好了。


我不使用PHP(Python FTW),但是如果你想确保只有文本文件通过,请过滤它们:

if ($_FILE['file']['type'] == 'text/plain' && strrpos($_FILE['file']['name'], '.txt') === strlen($_FILE['file']['name']) - strlen('.txt'))
{
  echo 'Your file is legit. Continue...'
} else {
  echo 'You can\'t upload that!'
}

我不确定text/plain是否会导致假阴性,所以如果确实如此,只需删除它。

答案 1 :(得分:0)

默认情况下,除非您使用某种类型的第三方库,否则可以上传任何文件。你用它做什么,解析它,是另一个故事:)

答案 2 :(得分:0)

使用表单中提供的文件名,您必须提取文件扩展名。然后,您将文件扩展名与扩展名列表(您允许)进行比较,如果它们与任何扩展名都不匹配,请不要处理该文件。

首先通过

提取扩展名
$ext = substr(strrchr($file_name,'.'),1);

并使用case语句或(因为你有1个允许的扩展名)比较结果,如果

if ($ext == 'txt') // upload the file