从文件名设置PHP变量

时间:2015-05-15 19:11:21

标签: php

我是PHP的新手,我正在尝试从目录中选择一个文件,然后使用该文件名来设置$filename变量,这样我就可以处理该文件(打开,循环等等)。 )。但是,在我选择$filename后,<?php $filename = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $filename = test_input($_POST["filename"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <form method="POST" action="processFile.php"> <input type="file" name="filename"> <input type="submit" name="submit" action="Submit" value="Submit"> </form> 仍然为空。

<?php

$filename = $_POST['filename']; 
$handle = fopen ($filename, "r");

$header = fgetcsv($handle, '', "\t"); // gets a row at a time, so first row
fclose($handle);

print "<br />";

$cols = $header;

$length = count($cols);

var_dump($cols);

print "<br />";
?>

processFile.php:

@font-face {
  font-family: 'PT Sans Narrow';
  font-style: normal;
  font-weight: 400;
  src: local('PT Sans Narrow'), local('PTSans-Narrow'), url(http://fonts.gstatic.com/l/font?kit=UyYrYy3ltEffJV9QueSi4VubgSqbO8GPta82DSsWGmo) format('woff2');
}

2 个答案:

答案 0 :(得分:0)

您需要将此代码添加到表单以启用文件上传

<form method="POST" action="processFile.php" enctype="multipart/form-data">
    <input type="file" name="filename">
    <input type="submit" name="submit" action="Submit" value="Submit">
</form>

答案 1 :(得分:0)

您的表单缺少有效的enctype enctype="multipart/form-data",并且您在处理文件时使用的是$_POST而不是$_FILES

  • enctype="multipart/form-data"放在表单标记内。
  • $_POST['filename']的所有实例更改为$_FILES['filename']

  • 从输入中删除action="Submit"。行动保留给<form>而不是输入。

资源:

  

实际上,它修复了它:$ name = $ _FILES [&#39; filename&#39;] [&#39; name&#39;]; - sqldoug

  • 如文档/资源链接中所述。