Ответ 1
Текущий код предоставит список всех файлов в папке, предполагая, что на стороне сервера вы хотите перечислить все файлы:
var fs = require('fs');
var files = fs.readdirSync('/assets/photos/');
На моем веб-сайте много фотографий из /assets/photos/
folder. Как я могу получить список файлов в этой папке с помощью Javascript?
Текущий код предоставит список всех файлов в папке, предполагая, что на стороне сервера вы хотите перечислить все файлы:
var fs = require('fs');
var files = fs.readdirSync('/assets/photos/');
Нет, Javascript не имеет доступа к файловой системе. На стороне сервера Javascript - это совсем другая история, но я думаю, вы не это имеете в виду.
Для файлов на стороне клиента вы не можете получить список файлов в локальном каталоге пользователя.
Если пользователь предоставил загруженные файлы, вы можете получить к ним доступ через свой элемент input
.
<input type="file" name="client-file" id="get-files" multiple />
<script>
var inp = document.getElementById("get-files");
// Access and handle the files
for (i = 0; i < inp.files.length; i++) {
let file = inp.files[i];
// do things with file
}
</script>
Я пишу файл dir.php
var files = <?php $out = array();
foreach (glob('file/*.html') as $filename) {
$p = pathinfo($filename);
$out[] = $p['filename'];
}
echo json_encode($out); ?>;
В вашем скрипте добавьте:
<script src='dir.php'></script>
и используйте массив файлов []
Для получения списка имен файлов в указанной папке вы можете использовать
**fs.readdir(directory_path, callback_function)**
Это вернет список, который вы можете проанализировать с помощью простой индексации списка, например, file [0], file [1] и т.д. Надеюсь это поможет.
Я использую следующий (урезанный код) в Firefox 69.0 (в Ubuntu), чтобы прочитать каталог и показать изображение как часть цифровой фоторамки. Страница сделана на HTML, CSS и JavaScript и находится на том же компьютере, где я запускаю браузер. Изображения также находятся на одной машине, поэтому просмотр снаружи не возможен.
var directory=<path>;
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", directory, false ); // false for synchronous request
xmlHttp.send( null );
var ret=xmlHttp.responseText;
var fileList=ret.split('\n');
for(i=0;i<fileList.length;i++){
var fileinfo=fileList[i].split(' ');
if ( fileinfo[0] == "201:" ) {
document.write(fileinfo[1]+"<br />");
document.write("<img src=\""+directory+fileinfo[1]+"\" />");
}
}
Для этого необходимо отключить политику security.fileuri.strict_origin_policy. Это означает, что это может быть не то решение, которое вы хотите использовать. В моем случае я счел это нормальным.
Я сделал свой маршрут для каждого файла в определенном каталоге. Поэтому переход по этому пути означал открытие этого файла.
function getroutes(list){
list.forEach(function(element) {
app.get("/"+ element, function(req, res) {
res.sendFile(__dirname + "/public/extracted/" + element);
});
});
Я вызвал эту функцию, передавая список имен файлов в каталоге __dirname/public/extracted
, и он создал отдельный маршрут для каждого имени файла, который я смог отобразить на стороне сервера.