2013-08-21 62 views
1

基本上,我需要一種上傳CSV文件並將其保存到多維數組中的方式,如標題所示。如何上傳CSV文件並將其保存到多維數組中?

我已搜查遠播網上,我發現一個jQuery-CSV添加在這裏: https://github.com/evanplaice/jquery-csv

這jQuery庫可以處理轉換CSV文件轉換成一個多維數組,雖然它是上裝部分我我真的有麻煩了。

我在如何將PHP和jQuery一起交互時遇到困難。我知道一個事實,即PHP始終在服務器上先調用,然後在客戶端調用jQuery/Javascript。因此,我很困惑如何允許用戶通過PHP上傳CSV文件,保存位置,將其傳遞給jQuery,然後將其保存在那裏。

我相信這很可能是一個簡單的任務,儘管我無法在任何地方找到我的答案。

因此,這裏是我想做到這一點:

  • 上傳文件,PHP
  • 保存CSV與PHP或jQuery的
  • 解析CSV到AA串多維數組使用$.csv.toArrays(csv);來自jQuery-csv加上

非常感謝所有的幫助和建議!

+1

JQuery不會d你的服務器端存儲文件,你必須在你的HTML中輸出你的CSV文件作爲你的數組(JSON),jQuery可以從那裏選擇它 –

+0

爲什麼你用jquery來解析它。爲什麼不用一個簡單的php表單上傳它,使用csv庫將其解析爲csvn。稍後,您可以使用iframe或其他方式將文件異步傳輸到服務器。 –

+0

@ØHankyPankyØ - 聽起來好多了。我不需要將CSV文件保存在任何地方。我只需要保存它的內容。我會怎麼做呢? – Fizzix

回答

2

在html中創建一個簡單的文件上傳表單,當按下提交按鈕時,它會通過發佈將文件上傳到您的PHP腳本yourscript.php。請確保您的文件命名類型的輸入一件好事,因爲你需要在PHP中引用名

<form action="yourscript.php" method="post" enctype="multipart/form-data"> 
<input type="file" name="upload_file" /> 
<input type="submit" /> 
</form> 

PHP yourscript.php

<?php 
$csv_array = Array(); 
$file = fopen($_FILES['upload_file']['tmp_name'], 'r'); 
if($file){ 
    while (($line = fgetcsv($file)) !== FALSE) { 
     //$line is an array of the csv elements 
     array_push($csv_array,$line); 
    } 
    fclose($file); 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script>var your_array = <?php echo json_encode($csv_array); ?></script> 
</head> 
<body> 

</body> 
</html> 

How to create an array from a CSV file using PHP and the fgetcsv function

事情變得有點棘手,當你開始使用ajax來處理文件上傳,所以我建議你在嘗試使用ajax做文件上傳之前學習ajax如何工作

+0

感謝。我試圖測試它,雖然它在我試圖打印'your_array'時拒絕工作,沒有打印任何內容。有什麼想法嗎? – Fizzix

+0

好像它可能進入一個無限循環,因爲瀏覽器窗口不會停止加載..? – Fizzix

+0

你是對的。有工作代碼調用該文件的fopen從其臨時目錄,包括檢查文件是否更新存在 – DGS

相關問題