我正在嘗試使用fopen()來允許我將值從csv單元格傳遞到Oracle 11g數據庫。fopen()找不到文件在同一目錄下使用php
當用戶通過html表單上載xls時,csv被「創建」。從那裏,我將'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社區!
您是否檢查過您的'$ objWriter-> save()'調用是否成功,甚至是首先執行?另外,你從不打擾檢查你的上傳是否成功。 –
你是正確的,我的代碼沒有檢查,但我看着數據庫和文件保存成功。 –
另外,保存調用看起來不正確。在第二個參數中指定擴展名似乎是多餘的。爲什麼不只是' - >保存('file.csv')'?檢查你的服務器,如果你只有'文件'在那裏。 –