我正在尝试使用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社区!
答案 0 :(得分:0)
这完全取决于$objWriter->save()
将保存文件的位置。如果这是与输入文件相同的文件夹,那么它将是您的临时目录(/ tmp /最有可能在* nix上)
并且默认情况下open()
不太可能在那里看。
你可以避免这些问题,让我的所有路径都是绝对的。