我是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>
processFile.php:
<?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 />";
?>
您需要将此代码添加到表单中以启用文件上传
<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>
您的表单缺少有效的enctype enctype="multipart/form-data"
,并且您使用的是$_POST
,而不是处理文件时所需的$_FILES
。
- 将
enctype="multipart/form-data"
放入表单标签中 -
将
$_POST['filename']
的所有实例更改为$_FILES['filename']
-
从输入中删除
action="Submit"
。动作是为<form>
保留的,而不是输入。
资源:
- http://php.net/manual/en/features.file-upload.php
- http://php.net/manual/en/features.file-upload.multiple.php
实际上,这修复了它:$name=$_FILES['filename']['name'];–sqldoug
- 如文档/资源链接中所述