使用 fopen 使用 php 上传文件

问题描述 投票:0回答:1

我正在上传一个文件,然后尝试使用 fgetcsv 对其执行操作。

这是我下面的脚本。在我添加文件上传部分之前,一切工作正常。现在它没有显示任何错误,只是不显示上传的数据。

我收到“文件已上传”通知,并且文件已正确保存,但条目数计数器显示 0。

if(isset($_FILES[csvgo])){

    $tmp = $_FILES[csvgo][tmp_name];

    $name = "temp.csv";

    $tempdir = "csvtemp/";

    if(move_uploaded_file($tmp, $tempdir.$name)){ echo "file uploaded<br>"; }

    $csvfile = $tempdir.$name;

    $fh = fopen($csvfile, 'r');
    $headers = fgetcsv($fh);
    $data = array();
    while (! feof($fh))
    {
        $row = fgetcsv($fh);
        if (!empty($row))
        {
            $obj = new stdClass;
            foreach ($row as $i => $value)
            {
                $key = $headers[$i];
                $obj->$key = $value;
            }
            $data[] = $obj;
        }
    }
    fclose($fh);

    $c=0;

    foreach($data AS $key){

            $c++;

            $phone = $key->PHONE;

            $fax = $key->Fax;

            $email = $key->Email;

            // do things with the data here

    }

    echo "$c entries <br>";
}
php fgetcsv
1个回答
0
投票

您可能需要指定绝对服务器路径。

$tempdir = $_SERVER['DOCUMENT_ROOT'] . "/csvtemp/";

编辑:我只做了一些小的修改(绝对路径并向数组键名添加引号)就测试了您的代码,并且它工作得很好。它可能超出了您发布的内容的范围。可能是文件权限错误或上传表单有问题。

只是一个想法,但您可以尝试提高 PHP 错误级别。这可能会发现一些原本被忽视的东西。

ini_set("display_errors", 1);
ini_set("error_reporting", 2147483647);

如果失败,您可以随时向各处扔出一堆回声,直到找到罪魁祸首。

© www.soinside.com 2019 - 2024. All rights reserved.