根据文件名设置PHP变量


Set PHP variable from file name

我是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

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