fopen()没有使用php在同一目录中找到文件

时间:2014-07-03 14:23:49

标签: php csv phpexcel fopen xls

我正在尝试使用fopen()来允许我将值从csv单元格传递到Oracle 11g数据库。

创建了csv'当用户通过html表单上传xls时。从那里,我转换了' file.xls'到' file.csv'。到目前为止,我已经取得了成功。但是,在使用fopen()[第33行,它在注释中标记]时,它无法找到明显创建的' file.csv'。使用fopen()时,我的符号是错误的吗?

处理程序:

$allowed =  array('xls');
$filename = $_FILES['uploaded']['name'];
$file = $_FILES['uploaded']['tmp_name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(in_array($ext,$allowed) ) {

    $inputFileType = 'Excel5';
    $inputFileName = $file;

    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcelReader = $objReader->load($inputFileName);

    $loadedSheetNames = $objPHPExcelReader->getSheetNames();

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcelReader, 'CSV');

    foreach($loadedSheetNames as $sheetIndex => $loadedSheetName) {
            $objWriter->setSheetIndex($sheetIndex);
            $objWriter->save('file'.'.csv');}

    }
    $fopen = fopen('file.csv', 'r'); //**line 33**//
    if($fopen) {
            while (($line = fgetcsv($files)) !== FALSE) {
            $csv_array[] = array_combine(range(1, count($line)), array_values($line));
            }
    }

值得注意的是,我确实计划添加删除部分以删除' file.csv'。我只是用它来更新数据库,那对我来说没用。所以,如果有一种比保存它更有效的方法,更新数据库,删除它,我很想知道:)。谢谢,SO社区!

1 个答案:

答案 0 :(得分:0)

这完全取决于$objWriter->save()将保存文件的位置。如果这是与输入文件相同的文件夹,那么它将是您的临时目录(/ tmp /最有可能在* nix上) 并且默认情况下open()不太可能在那里看。

你可以避免这些问题,让我的所有路径都是绝对的。