我正在尝试为要下载的文件列表编写网页。文件与网页一起存储,我希望网页动态列出要下载的文件夹中的所有文件。这样,当添加更多内容时,我不必修改网页。我知道如何使用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公用文件夹中的文件相结合,以便使文件可用。
答案 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()));
}
?>