2014-07-03 57 views
1

我正在嘗試使用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社區!

+0

您是否檢查過您的'$ objWriter-> save()'調用是否成功,甚至是首先執行?另外,你從不打擾檢查你的上傳是否成功。 –

+0

你是正確的,我的代碼沒有檢查,但我看着數據庫和文件保存成功。 –

+0

另外,保存調用看起來不正確。在第二個參數中指定擴展名似乎是多餘的。爲什麼不只是' - >保存('file.csv')'?檢查你的服務器,如果你只有'文件'在那裏。 –

回答

0

這一切都取決於$objWriter->save()將保存文件的位置。如果這是與輸入文件相同的文件夾,那麼它將是您的臨時目錄(/ tmp /最可能在* nix上) 而且默認情況下open()看起來不太可能。

你可以避免這些問題,我所有的路徑都是絕對的。

+0

是的,你是對的fopen()沒有找到正確的道路。菜鳥錯誤嘿嘿 –

相關問題