如何使用JavaScript访问存储在网站上的其他文件?

时间:2011-12-09 17:37:49

标签: javascript download navigation webpage

我正在尝试为要下载的文件列表编写网页。文件与网页一起存储,我希望网页动态列出要下载的文件夹中的所有文件。这样,当添加更多内容时,我不必修改网页。我知道如何使用JavaScript在网页上创建链接,但我需要先用它来查找文件的名称。

我找到了一个网站,其中包含用于浏览文件浏览器等文件的代码,但它只使用字符串来存储当前位置。

这是标题:

<script type="text/javascript"><!--

var myloc = window.location.href;
var locarray = myloc.split("/");
delete locarray[(locarray.length-1)];
var fileref = locarray.join("/");

//--></script>

这是在身体:

<form>
<input type=button value="Show Files" onClick="window.location=fileref;">
</form>

然而,这并没有真正帮助,因为我正在尝试创建没有文件浏览器的文件的下载链接。

编辑:

当您托管传统的HTML页面时,您将htmlfile以及页面的任何图像或内容上传到您使用的服务器。 我想使用javascript动态链接到网页托管的每个文件。 我正在尝试将此与托管Dropbox公用文件夹中的文件相结合,以便使文件可用。

1 个答案:

答案 0 :(得分:1)

如果您需要服务器上的文件列表,则需要使用服务器端脚本来收集其名称:

JS -

//use AJAX to get the list of files from a server-side script
$.getJSON('path/to/server-side.php', { 'get_list' : 'true' }, function (serverResponse) {

    //check the response to make sure it's a success
    if (serverResponse.status == 'success') {
        var len = serverResponse.output.length,
            out = [];

        //iterate through the serverResponse variable
        for (var i = 0; i < len; i++) {

            //add output to the `out` variable
            out.push('<li>' + serverResponse.output[i] + '</li>');
        }

        //place new serverResponse output into DOM
        $('#my-link-container').html('<ul>' + out.join('') + '</ul>');
    } else {
        alert('An Error Occured');
    }
});

PHP -

<?php

//check to make sure the `get_list` GET variable exists
if (isset($_GET['get_list'])) {

    //open the directory you want to use for your downloads
    $handle = opendir('path/to/directory');
    $output = array();

    //iterate through the files in this directory
    while ($file = readdir($handle)) {

        //only add the file to the output if it is not in a black-list
        if (!in_array($file, array('.', '..', 'error_log'))) {
            $output[] = $file;
        }
    }
    if (!empty($output)) {

        //if there are files found then output them as JSON
        echo json_encode(array('status' => 'success', 'output' => $output));
    } else {

        //if no files are found then output an error msg in JSON
        echo json_encode(array('status' => 'error', 'output' => array()));
    }
} else {

    //if no `get_list` GET variable is found then output an error in JSON
    echo json_encode(array('status' => 'error', 'output' => array()));
}
?>