上传文件,然后尝试使用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>";
}
答案 0 :(得分:0)
您可能需要指定绝对服务器路径。
$tempdir = $_SERVER['DOCUMENT_ROOT'] . "/csvtemp/";
编辑:我只用了一些小的修改(绝对路径和为数组键名添加引号)测试了你的代码,它运行正常。它可能超出了您发布的范围。也许文件权限错误或上传表单的时髦。
只是一个想法,但您可能会尝试提高您的PHP错误级别。这可能会发现一些原本没有引起注意的事情。
ini_set("display_errors", 1);
ini_set("error_reporting", 2147483647);
如果失败了,你总是可以在整个地方投掷一堆回声,直到找到罪魁祸首。