如何从文件夹

时间:2016-02-11 09:47:48

标签: jquery html csv datatables html-table

我想知道如何从多个CSV文件创建HTML数据表。

例如,我有一个包含名为"Data_Source1-Memory.csv", "Data_Source1-CPU.csv", Data_Source1-Disk.csv", Data_Source2-Memory.csv" and "Data_Source2-CPU.csv"的CSV文件的文件夹。

这些文件是根据“Data_Source1”或“Data_Source2”动态创建的。因此,每次它不一定有内存或CPU或磁盘CSV文件。

有没有办法可以循环浏览“Data_Source1”的这些csv文件,并将它们显示在HTML表格中one table for Memory, one table for Disk and one table for CPU)。然后在“Data_Source2”文件夹中循环,并将这些csv显示为HTML表格。

到目前为止,我所能找到的只是jQuery plugins,据我所知,只能测试静态csv文件或数据(例如DataTables)。

我也知道存在哪些文件,所以我不必搜索是否有文件,我知道我需要哪些文件。我只是不知道如何遍历不同的csv文件来生成每个csv文件的表。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

只要服务器目录启用了目录列表,并且您从域中运行脚本,那么通过从某个目录收集某些文件的列表应该没有问题。只需使用$.ajax并从检索到的目录列表HTML页面中解析文件名。以下适用于标准apache:

var fileMask = '-CPU', //signature of the files
    fileExt = 'csv'; //file extension
$.ajax({
    url: 'path/to/directory/',
    success: function (data) {
        var file, files = [];
        $('a[href]', data).each(function(i, a) {
            file = $(a).attr('href');
            if (~file.indexOf(fileMask) && file.match(/[^.]+$/) == fileExt) {
                files.push(file);
            }
        })
    }
})

结果是包含

files数组
['Data_Source1-CPU.csv', 'Data_Source2-CPU.csv', 'Data_Source3-CPU.csv']

如果您希望文件列表按数字顺序排列,则可以使用files.sort()。现在,使用files作为自动创建的dataTable的基础应该是一个nobrainer - 请参阅Create dataTable column definition from uploaded csv data - 循环到files并插入每个CSV的数据而不是单个文件,如回答。