.txt PHP Файл с расширением txt для загрузки? - PullRequest
1 голос
/ 17 февраля 2011

Я делаю загрузку файла в php. Является ли .txt допустимым расширением для загрузки фильтров? Если да, могу ли я увидеть пример?

РЕДАКТИРОВАТЬ: Извините, я не слишком ясно. Я имею в виду только то, что я хочу, чтобы пользователь мог загружать файлы .txt, и это все.

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

Все действует, пока вы не сделаете его недействительным, когда дело доходит до загрузки файлов. Поиграйте с этим кодом, и вы увидите, какие свойства делают 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 вызовет ложные негативы, поэтому, если это так, просто удалите его.

0 голосов
/ 17 февраля 2011

Используя предоставленное имя файла из вашей формы, вы должны извлечь расширение файла.Затем вы сравниваете расширение файла со списком расширений (которые вы разрешаете) и, если оно не соответствует ни одному из них, не обрабатываете файл.

Сначала извлеките расширение с помощью

$ext = substr(strrchr($file_name,'.'),1);

и сравните результат с помощью оператора case или (поскольку у вас есть 1 разрешенное расширение), только если

if ($ext == 'txt') // upload the file
0 голосов
/ 17 февраля 2011

По умолчанию, если вы не используете какую-либо стороннюю библиотеку, любой файл может быть загружен.То, что вы делаете с этим, разбираете его, это другая история:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...