-1

我需要 Javascript 代码来检索驻留在代码已知目录中的图像文件名列表(填充数组)。该目录位于“服务器端”,因此不适用“沙盒”规则,但没有实际运行的服务器,所以我不能使用实际的服务器调用(这只是一个基于浏览器的应用程序,用于显示我拍摄的照片)。

浏览器可以访问这些文件,我当前的程序只是使用我手动输入的带有文件名的数组来在需要时显示图像。我只需要这个数组由代码动态填充,而不是由我手动填充,因为目录中的文件经常更改。

该程序使用 Javascript,因为图片的主题在文件名中被编码为 4 个字母的代码,并且程序显示文件名包含适当代码的图像。

澄清一下-这基本上是我编写的在家用计算机上运行的程序。它使用 HTML、Javascript 和 Jquery 来显示在我的计算机上找到的信息。此时它无法通过 Internet 访问,因此不存在“服务器”。我将其列为服务器端仅仅是因为对类似问题的所有响应都会立即转到有关文件访问的“浏览器沙箱”问题。该程序允许我索引我拥有的照片,并通过单击按钮显示特定人、地点或动物的所有图像。
谢谢

4

2 回答 2

1

javascript无法扫描服务器上的目录

php(或其他服务器端语言)+javascript 是动态文件列表的唯一解决方案

这是一个简单的 php+js(ajax,json<-theproperway) 示例

images.html //适用于大多数现代浏览器。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>show images</title>
<script>
var
x=function(a,b,c){c=new XMLHttpRequest;c.open('GET',a);c.onload=b;c.send()},
display=function(){
 var myimages=JSON.parse(this.response);
 //now here u can show your images
 //myimages[0] is the first image....
}
window.onload=function(){
x('images.php',display);
}
</script>
</head>
<body>
</body>
</html>

images.php // php 5

<?php
$a=json_encode(glob("path/{*.gif,*.jpg,*.png}", GLOB_BRACE));
header('Content-Type: application/json');
header('Content-Length: '.strlen($a));
//header('Access-Control-Allow-Origin: *'); want to acces from crossdomain???
echo $a;
?>
于 2013-06-03T22:29:57.070 回答
0

如果您可以使用浏览器访问这些文件,那么在某处运行的服务器可以让 Internet 客户端查看该目录。根据该服务器支持的内容,您只需放入一个服务器端脚本,当客户端“检索”该脚本时,它会为其所在的目录列出目录,忽略其自己的文件名,然后将该列表作为 JSON 数组返回。例如,如果您的服务器支持 PHP,您将使用一个名为listing.phpcontent 的文件:

<?php
  if ($handle = opendir('.')) {
    $files = array();
    while (($entry = readdir($handle)) !== false) {
      // skip dir references and this file
      if($entry==="." || $entry===".." || $entry==="listing.php") continue;
      // add file to the list of files our client will want to care about
      $files[] = $entry;
    }
    // build a JSON-serialized object as response
    echo '{ "files" : [' . implode(',',$files) . ']}';
  }
?>

然后你在页面上使用普通的 ajax 调用来获取该列表(取决于你最喜欢的 JS 框架,函数调用会有所不同。纯 JS 方法是构建一个 XMLHttpRequest 对象并打开一个连接) GETlisting.php将 JSON 序列化字符串您可以使用许多 JSON 解释方法之一(最简单的方法var fileList = (new Function("return "+xhr.resonseText+";"))().files)返回到普通的 JS 对象,然后在其余代码中使用该数组。

于 2013-06-03T16:13:43.910 回答