gpt4 book ai didi

javascript - 如何获取JavaScript数组中特定目录内文件的所有路径

转载 作者:行者123 更新时间:2023-12-01 08:32:20 25 4
gpt4 key购买 nike

假设我们有一个具有以下地址的网站:https://example.com,并且内部有一个目录,例如:https://example.com/directory >

这就是我们所知道的,我们不知道 directory 文件夹中有哪些文件夹。

如何获取directory文件夹内所有文件的路径并将结果传递给javascript数组:

期望的结果在 javascript 中是这样的:

let paths = [

'https://example.com/directory/audio/song_1.mp3',
'https://example.com/directory/audio/song_2.mp3',
'https://example.com/directory/picture/image_1.png',
'https://example.com/directory/picture/image_2.jpg',
'https://example.com/directory/movie/clip.mp4',

];

我已经尝试了网上所有可能的解决方案,但似乎在没有帮助的情况下我找不到可行的解决方案。

directory 文件夹上方一层,我有 test.php:

    <?php
function getDirContents($dir, &$results = array()){
$files = scandir($dir);

foreach($files as $key => $value){
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
if(!is_dir($path)) {
$results[] = $path;
} else if($value != "." && $value != "..") {
getDirContents($path, $results);
$results[] = $path;
}
}

return $results;
}

echo json_encode(getDirContents('directory'));

它返回的结果如下:

"/storage/ssd4/693/8074693/public_html/directory/audio/song_1.mp3" [3]=> string(72) "/storage/ssd4/693/8074693/public_html/directory/audio/song_2.mp3" [4]=> string(72) "/storage/ssd4/693/8074693/public_html/directory/picture/image_1.png" [5]=> string(75) "/storage/ssd4/693/8074693/public_html/directory/picture/image_2.jpg" [6]=> string(61) "/storage/ssd4/693/8074693/public_html/directory/movie/clip.mp4" [7]=> string(73)

JavaScript代码感谢@mamoun othman :

$(document).ready( function() {

$.ajax({
type: 'POST',
url: '../test.php',
data: 'id=testdata',
dataType: 'json',
cache: false,
success: function(result) {
console.log(result)
},
});

});

我的 script.js 和 index.html 位于 https://example.com/script 的另一个文件夹中。

我可以使用 ajax 调用记录 PHP $results,但我仍然获得系统文件路径而不是相应的 URL!

最佳答案

使用json_encode(getDirContents('directory'))代替var_dump(),获取目录中所有路径的唯一方法是使用PHP循环通过文件并将输出返回为 JSON 或 XML(或者可能是文本,但你必须解析它),JSON 是你的情况的方法,你所要做的就是使用 Ajax 请求此 php 脚本的路径:

<?php
function getDirContents($dir, &$results = array()){
$files = array_diff(scandir($dir), array('..', '.'));;
foreach($files as $key => $value){
$path = $dir.DIRECTORY_SEPARATOR.$value;
if(is_dir($path)) {
getDirContents($path, $results);
} else {
// change this to https if you have HTTPS
// or have it as a variable like this :
// $protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$directory_path = basename($_SERVER['REQUEST_URI']);
$results[] = 'http://' . $_SERVER['SERVER_NAME'] . str_replace($directory_path, "", $_SERVER['REQUEST_URI']) .$path;
}
}

return $results;
}

echo json_encode(getDirContents('directory'));

对于 Ajax 调用:

$(document).ready(function() {
$.ajax({
type: 'POST',
url: '../test.php',
data: 'id=testdata',
dataType: 'json',
cache: false,
success: function(result) {
console.log(result)
},
});
});

关于javascript - 如何获取JavaScript数组中特定目录内文件的所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60109082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com