【问题标题】:How to upload a CSV file and save it into an multidimensional array?如何上传 CSV 文件并将其保存到多维数组中?
【发布时间】:2013-08-23 09:19:06
【问题描述】:

基本上,我需要一种方法来上传 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 add on 中的 $.csv.toArrays(csv); 将 CSV 解析为多维数组

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

【问题讨论】:

  • JQuery 不会读取您的服务器端存储文件,您必须将您的 CSV 文件输出为 HTML 中的数组 (JSON),然后 jQuery 可以从那里选择它
  • 你为什么要使用 jquery 来解析它。为什么不使用简单的 php 表单上传它,使用 csv 库将其解析为 csvn。稍后您可以使用 iframe 或其他东西将文件异步传输到服务器
  • @ØHankyPankyØ - 听起来好多了。我不需要将 CSV 文件保存在任何地方。我只需要保存它的内容。我该怎么做呢?
  • 只需上传文件并在服务器端解析它。首先使用标准 HTML 表单上传来执行此操作。如有必要,稍后再进行更高级的 AJAX 上传(您可能应该使用 google 的关键字)。
  • @deceze - 不知道该怎么做。 jQuery 和 AJAX 非常新。

标签: php jquery csv multidimensional-array


【解决方案1】:

在 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>

PHPyourscript.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 的工作原理

【讨论】:

  • 谢谢。我尝试对其进行测试,尽管当我尝试打印出your_array 时它拒绝工作,但没有打印任何内容。有什么想法吗?
  • 由于浏览器窗口没有停止加载,似乎它可能进入了无限循环..?
  • 你是对的。更新了工作代码从其临时目录调用 fopen 文件并包括检查文件是否存在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 2018-10-05
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多