Как выполнить генерацию CSV-файла в php? - PullRequest
1 голос
/ 23 сентября 2019

Я хочу сгенерировать файл csv с динамическим именем файла, которое получено из значений, которые я получил, используя запрос jjery ajax.Эти значения будут использоваться в качестве имени файла для моего сгенерированного файла CSV.Моя программа не генерирует CSV-файл.Что я должен сделать для создания файла csv?

Я новичок, когда дело доходит до php и особенно AJAX и Jquery, поэтому я все еще немного запутался в том, как работает запрос AJAX.

Я использую бесплатную пробную версию Sublime IDE и localhost для php.Программа отображает содержимое csv-файла через окно предупреждения, но не создает csv-файл.

Это мой файл запроса jquery ajax:


 var selectedLanguage = $('#selectLanguage').val();
 var length;

 length = selectedLanguage.length;

 for (var i = 0; i < length; i++) 
    {
        var selectedLanguage = $('#selectLanguage').val();
        $.ajax({
            crossDomain: true,
            async: false,
            url: "downloadFile.php",
            type: "GET",
            data: {"seLang": selectedLanguage[i]},
                success: function(data) 
                { 
                    alert(data);
                    location.reload();
                }
        });

    }

Это мой файл для скачивания.php код:

<?php
  $id="";

  if(isset($_GET['seLang'])){
   $id = $_GET['seLang'];

    $filename = "File_".$id.".csv"; 
    $f = fopen('php://memory', 'w');
    //set headers for column
    $fields = array('Content1', 'Content2', 'Content3','Content4');
    fputcsv($f, $fields, ',');

    fseek($f, 0);
    header('Content-Encoding: UTF-8');
    header('Content-type: text/csv; charset=UTF-8');
    header('Content-Disposition: attachment; filename="' . $filename . '";');
    fpassthru($f);


  }

  else
  {
    echo "<script type='text/javascript'>alert('Empty');</script>";

  }
?>

Редактировать 1: Спасибо Prvn и Sunday Johnson за попытку помочь.Хотя я нашел актуальную проблему.Я читал из другого поста на этом сайте, что невозможно сгенерировать CSV-файл с помощью AJAX.Что еще я могу сделать для меня, чтобы загрузить файл CSV?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="sample.csv"');

$fields = array('Content1', 'Content2', 'Content3','Content4');
$fp = fopen('php://output', 'wb');

foreach ( $fields as $line ) {
    $val = explode(",", $line);
    fputcsv($fp, $val);
}

fclose($fp);


Выход enter image description here

1 голос
/ 23 сентября 2019

Один комментарий о коде Ajax, почему вы перебираете значение?

О коде php, используйте вместо этого:

<?php
  $id="";

  if(isset($_GET['seLang'])){
      $id = $_GET['seLang'];

      $filename = "File_".$id.".csv"; 
      $f = fopen($filename, 'w');
      //set headers for column
      $fields = array('Content1', 'Content2', 'Content3','Content4');
      fputcsv($f, $fields, ',');
      fclose($f);
  }

  else
  {
    echo "<script type='text/javascript'>alert('Empty');</script>";

  }

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...