0

部分的な一致に基づいてWebサーバーから.pdfファイルをフェッチする際に問題が発生した場合は、JavaScriptの初心者を完全に完全に理解してください。Webサーバーにデータを出力するプログラムを作成しました。コンポーネントの1つは、.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ファイルが2つ以上の「data」文字列の連結であり、取得する価値がない理由で区切り文字として「_」で区切られていることです。の中へ。したがって、.pdfファイルが「somestring.pdf」の場合、問題なく取得できます。ただし、.pdfファイルが「somestring_anotherstring.pdf」の場合、「data」の値として「somestring」または「anotherstring」があると、その.pdfファイルを取得する方法がわかりません。

部分的な一致に基づいて正しいファイルをプルダウンするために使用できるある種のルックアップを取得するために、さまざまなことを試しました。最新の試みはjavascriptのFilenameFilterオブジェクトを使用することですが、javascriptの知識がないため、動作させるのに苦労しています。.pdfURLのルックアップとして呼び出すことができる新しい関数を作成しようとしました。

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またはwhat-have-youを使用してロードできます。特定のPDFのファイル名を見つける必要がある場合は、次のようにすることができます(からロードされたオブジェクトindex.jsonindexOfPDFs変数にあると仮定します)。

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