На моем веб-сайте много изображений из /assets/photos/папки. Как я могу получить список файлов в этой папке с помощью Javascript?
ActiveXObjectдля доступа к файловой системе клиентской системы. Я спросил.
На моем веб-сайте много изображений из /assets/photos/папки. Как я могу получить список файлов в этой папке с помощью Javascript?
ActiveXObjectдля доступа к файловой системе клиентской системы. Я спросил.
Ответы:
Текущий код даст список всех файлов в папке, предполагая, что на стороне сервера вы хотите перечислить все файлы:
var fs = require('fs');
var files = fs.readdirSync('/assets/photos/');
Нет, Javascript не имеет доступа к файловой системе. Серверный Javascript - это совсем другая история, но я думаю, вы не это имеете в виду.
Пишу файл 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>
и используйте массив files []
*.*или используйте scandir для сохранения расширений файлов,$out = scandir("."); echo json_encode($out);
Для файлов на стороне клиента вы не можете получить список файлов в локальном каталоге пользователя.
Если пользователь предоставил загруженные файлы, вы можете получить к ним доступ через их 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>
Для получения списка имен файлов в указанной папке вы можете использовать:
fs.readdir(directory_path, callback_function)
Это вернет список, который вы можете проанализировать с помощью простой индексации списка, например file[0],file[1], и т. Д.
Я сделал свой маршрут для каждого файла в определенном каталоге. Следовательно, переход по этому пути означал открытие этого файла.
function getroutes(list){
list.forEach(function(element) {
app.get("/"+ element, function(req, res) {
res.sendFile(__dirname + "/public/extracted/" + element);
});
});
Я вызвал эту функцию, передав список имен файлов в каталоге, __dirname/public/extractedи она создала другой маршрут для каждого имени файла, который я смог отобразить на стороне сервера.
Я использую следующий (урезанный код) в 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необходимо отключить политику . Это означает, что это может быть не то решение, которое вы хотите использовать. В моем случае я счел это нормально.