用于处理路径/ URI的JavaScript或Query库

时间:2011-03-07 09:43:30

标签: javascript jquery path uri

有人可以建议使用库来处理以下路径:/a/b/c.jpghttp://asdf/sdf/fd.jpg

我需要获取目录或文件名字符串,类似于以下PHP filesystem functons提供的内容:

  • dirname
  • basename

2 个答案:

答案 0 :(得分:3)

查看Flagrant Badassery博客的parseURI功能。它可以解析任何格式良好的URI。

答案 1 :(得分:1)

使用jQuery或任何Javascript,出于安全原因,您无法列出目录及其中的文件。

您可以使用正则表达式获取文件名:

var path = "/a/b/c.jpg",
filename = path.replace(/^.*(\\|\/|\:)/, ''); 

要获取您可以使用的文件的扩展名和基本名称(注意:,您还需要将其与上述代码一起使用):

var basename = filename.substr(0, filename.lastIndexOf( "." )),
extension = filename.substr(filename.lastIndexOf( "." )+1, filename.length);

如果确实需要获取目录列表,您可以使用PHP获取它并使用AJAX请求将其返回给客户端。绝对不推荐这样做,因为它很容易被滥用来列出安全或私有文件。我建议这样做的唯一例子是,如果您列出的目录肯定只包含您知道可以安全显示的文件,例如已上载的图像目录。要做到这一点,你会这样做:

目录中的PHP文件(index.php)

<?

// Set JSON headings
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

// The directory to list
$this_directory = opendir(".");

// Loop through each file
while($file_name = readdir($this_directory)) {

    // Add the files to an array
    if($file_name != "." && $file_name != "..") $return_array[] = $file_name;
}

// Return the array as JSON
echo json_encode($return_array);

// Close the directory
closedir($this_directory);

?>

的Javascript

// Get the JSON from the PHP file 
$.getJSON("img/", function(data){

    // Loop through each file
    for(var i = 0, j = data.length; i < j; i++) {

        // Do whatever you want with the filename
        console.log(data[i]);

    }

});

同样,只在您知道将包含可以向世界显示的文件的目录上执行此操作。 永远不要向PHP文件传入一个选项来指定要列出的目录。例如,不要让PHP接受诸如“/home/site.com/sensitive_data/”之类的输入,因为它将允许攻击者随意列出您服务器上的任何目录。