【问题标题】:Read multiple files to string with javascript用javascript读取多个文件到字符串
【发布时间】:2015-04-07 17:18:35
【问题描述】:

我的应用程序读取服务器上的特定 .txt 文件并将内容写入字符串(数组)

filename = "textfile01.txt"
$.get(filename, function(datafil) {
    var bookings = datafil.split("\n");

    //Display
    $("#divname").append(bookings);

});

效果很好,但我想将那个目录中所有文本文件的内容添加到我的数组中。 我想使用正则表达式,但我不知道如何应用它们。类似于“在 datafil 字符串中加载所有 /textfile\d\d\.txt/files”。

所以我可以加载 textfile01.txt、textfile02.txt 等等。

谢谢!

【问题讨论】:

    标签: javascript file text


    【解决方案1】:

    客户端无权访问目录的文件列表。这使得无法“直接”获取要下载的可能文件列表。

    如果您保持一致的文件名协议(如 textfile01.txt、textfile02.txt 等...),您可以轻松地通过循环向上计数。

    var totalFiles = 99;
    for (var i = 0; i < totalFiles; i++){
        var number = (i < 10) ? '0' + i : i;
        var filename = "textfile" + number + ".txt";
    
        $.get(filename, function(datafil) {
            var bookings = datafil.split("\n");
    
            // Display
            $("#divname").append(bookings);
        });
    }
    

    或者,如果您更愿意使用每个文件名称不同的文件,一个带有文件名的简单数组就足够了。

    var files = ["hello.txt", "world.txt"];
    files.forEach(function(file, index){
        $.get(file, function(datafil) {
            var bookings = datafil.split("\n");
    
            // Display
            $("#divname").append(bookings);
        });
     });
    

    请注意,$.get() 函数几乎会同时被调用,这意味着无法保证文件的内容会以相同的顺序附加到#divname。

    【讨论】:

    • 实际上,我的文件将被命名为“prefix_numbersForDay_NumbersForTime.txt”,所以前缀是已知的,我可以为 Day 做一个“for”循环,因为我只会读取最近的文件,但我可以不要考虑做一个“for”循环来查找所有文件。 NumbersForTime 是 4 位数字
    • 那么恐怕你对 JavaScript 不走运了。您将不得不求助于服务器端解决方案。就像 .php 读取目录的内容并在使用 JQuery 的 .get() 调用时返回 JSON 字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多