0

完整和完整的 javascript 新手在这里根据部分匹配从 Web 服务器获取 .pdf 文件时遇到问题。我制作了一个将数据输出到网络服务器的程序,其中一个组件是 .pdf 文件的文件夹。我希望能够单击一个链接,该链接将根据生成的数据表中的值提取相应的 .pdf 文件(我为此使用了 slickgrid)。每个 .pdf 文件都包含数据表中的值,并且可以很好地查询 .pdf 文件夹,并且我已经成功地使用以下代码获得了我想要的 .pdf:

var value = grid.getData().getItem(row)['data'];
var locpath = window.location.pathname.substring(0,window.location.pathname.lastIndexOf('/'));
var plotsFolder = window.location.protocol + "//" + window.location.host + locpath + "/CovPlots/";
var href = plotsFolder + value + ".pdf";
return "<a href='" + href + "'>" + value + "</a>";

这里的问题是,有时生成的 .pdf 文件是两个或多个(到目前为止我已经看到多达 4 个)“数据”字符串的串联,由于不值得得到的原因,用“_”作为分隔符分隔进入。所以,如果 .pdf 文件是“somestring.pdf”,我可以毫无问题地得到它。但是,如果 .pdf 文件是“somestring_anotherstring.pdf”,如果我将“somestring”或“anotherstring”作为“data”的值,我无法弄清楚如何获取该 .pdf 文件。

我已经尝试了很多不同的方法来获得某种查找,我可以使用这些查找来根据部分匹配提取正确的文件。最新的尝试是使用 javascript 中的 FilenameFilter 对象,但是在没有任何 javascript 知识的情况下,我很难让它工作。我试图创建一个新函数,我可以调用它来查找 .pdf URL:

function lookup() {
    File directory = new File(plotsFolder);
    String[] myFiles = directory.list(new FilenameFilter() {
        public boolean accept(File directory, String fileName) {
        return fileName.match(value);
        }
    });
}

这似乎只会引发错误。谁能指出我正确的方向,以便能够根据部分匹配下载正确的 .pdf 文件?我还尝试查看是否有 jquery 方法可以做到这一点,但似乎找不到有效的方法。提前致谢!

4

1 回答 1

0

如果没有服务器的支持,JavaScript 无法从部分文件名中找到文件。但是,您可以做的是在服务器上有一个小脚本,为 JavaScript 进行部分文件名匹配,然后 JavaScript 可以要求服务器进行匹配,然后当它得到匹配时,它可以使用那个文件名。

如果您不介意一次加载所有 PDF 的整个索引,您可以使用这个 Python 小脚本生成一个漂亮的、JavaScript 友好的 JSON 格式的索引:

#!/usr/bin/env python
# Create an index of a bunch of PDF files.
# Usage: python make_index.py directory_with_pdf_files

import os
import sys
import json


def index(directory):
    index = {}

    for filename in os.listdir(directory):
        base, ext = os.path.splitext(filename)
        if ext.lower() != '.pdf':
            continue
        for keyword in base.split('_'):
            index[keyword] = filename

    with open(os.path.join(directory, 'index.json'), 'w') as f:
        f.write(json.dumps(index))


if __name__ == '__main__':
    index(sys.argv[1])

然后你可以index.json用 jQuery 或你有什么来加载。当您需要查找特定 PDF 的文件名时,您可以执行以下操作(假设从中加载的对象index.jsonindexOfPDFs变量中):

var href = plotsFolder + indexOfPDFs[value];
于 2013-02-10T23:49:52.193 回答