如何上传CSV文件并将其保存到多维数组中


How to upload a CSV file and save it into an multidimensional array?

基本上,我需要一种上传CSV文件并将其保存到多维数组中的方法,如标题所示。

我在网上搜索了很多,在这里找到了一个jQuery csv插件:https://github.com/evanplaice/jquery-csv

jQuery库可以处理将CSV文件转换为多维数组的问题,尽管这是我真正遇到麻烦的上传部分。

我在如何将PHP和jQuery一起交互方面遇到了困难。我知道一个事实,PHP总是首先在服务器端调用,然后在客户端调用jQuery/Javascript。因此,我非常困惑如何允许一个用来通过PHP上传CSV文件,保存位置,将其传递给jQuery,然后将其保存在那里。

我确信这很可能是一项简单的任务,尽管我在任何地方都找不到答案。

我想这样做:

  • 用PHP上传文件
  • 使用PHP或jQuery将CSV保存为字符串
  • 使用jQuery CSV加载项中的$.csv.toArrays(csv);将CSV解析为多维数组

非常感谢所有的帮助和建议,谢谢!

在html中创建一个简单的文件上传表单,当按下提交按钮时,该表单将通过post将文件上传到您的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>

from如何使用PHP和fgetcsv函数从CSV文件创建数组

当你开始使用ajax处理文件上传时,事情会变得有点棘手,所以我建议你在尝试使用ajax进行文件上传

之前了解ajax的工作原理