HTML 表单数据到 CSV,无需 PHP文件

问题描述 投票:0回答:1

所以,我有这个 HTML 表单:

<!DOCTYPE html>
<html>
<head>
    <title>Document</title>
</head>
<body>
    <form>
        <label>Name</label>
        <input type="text" name="name" id="name"> <br>
        <label>Surname</label>
        <input type="text" name="name" id="name"> <br>
        <label>Birthday</label>
        <input type="date" name="date" id="date">
        <button type="submit">Submit</button>
    </form>
</body>
</html>

我需要将插入的数据放入已经存在的 .csv 文件中,并且它与 html 文件位于同一文件夹中。我需要在没有任何类型的服务器的情况下离线使用此文件,我不想安装任何额外的东西,有什么方法可以做到这一点吗?
我感谢任何形式的帮助,提前致谢

我考虑过使用 php,但这意味着使用某种本地服务器,我想让事情尽可能简单。

html forms csv
1个回答
0
投票

您可以使用 JavaScript 和 HTML5 的 Blob 对象来实现此目的,它允许您在客户端处理类似文件的对象。我发布了一些 HTML 代码,下面包含一些 JS 代码,以展示如何使用它来将输入数据保存到提交的 CSV 文件中。

<!DOCTYPE html>
<html>
<head>
    <title>Document</title>
</head>
<body>
    <form id="myForm">
        <label>Name</label>
        <input type="text" name="name" id="name"> <br>
        <label>Surname</label>
        <input type="text" name="surname" id="surname"> <br>
        <label>Birthday</label>
        <input type="date" name="date" id="date">
        <button type="submit">Submit</button>
    </form>

    <script>
        document.getElementById('myForm').addEventListener('submit', function(e) {
            e.preventDefault();

            var name = document.getElementById('name').value;
            var surname = document.getElementById('surname').value;
            var date = document.getElementById('date').value;

            var csvContent = 'Name,Surname,Birthday\n' + name + ',' + surname + ',' + date;

            var blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
            if (navigator.msSaveBlob) { // IE 10+
                navigator.msSaveBlob(blob, 'data.csv');
            } else {
                var link = document.createElement("a");
                if (link.download !== undefined) { // feature detection
                    // Browsers that support HTML5 download attribute
                    var url = URL.createObjectURL(blob);
                    link.setAttribute("href", url);
                    link.setAttribute("download", 'data.csv');
                    link.style.visibility = 'hidden';
                    document.body.appendChild(link);
                    link.click();
                    document.body.removeChild(link);
                }
            }
        });
    </script>
</body>
</html>

在表单的提交事件中添加一个事件监听器,因此当提交表单时,它会阻止表单实际提交(这会刷新页面),而是获取输入字段的值,创建一个 CSV 格式的字符串这些值,然后从此字符串创建一个新的 Blob 对象。

© www.soinside.com 2019 - 2024. All rights reserved.