выберите путь к файлу на сервере и используйте этот путь на клиенте - PullRequest
0 голосов
/ 12 октября 2018

Я хочу создать слайдер изображений с несколькими случайно выбранными изображениями.Сначала я хочу прочитать каталог с изображениями на сервере.Указанный путь должен быть сопоставлен с filePath и fileName.

const imgPaths = fs.readdirSync('../Slider/public/images'); // read the images folder
const imgData = imgPaths.map(currentPath => {
    currentPath = `./public/images/${currentPath}`;
    return {
        filePath: currentPath,
        fileName: path.parse(path.basename(currentPath)).name
    };
});

При запросе файла от клиента сервер должен выбрать случайный файл и отправить данные клиенту

router.get('/img', (req, res) => {
    const targetImg = imgData[Math.floor(Math.random() * imgData.length)];
    res.send(targetImg);
});

Клиент сам запускает ползунок, который запрашивает случайное изображение с сервера и обновляет текст имени изображения.

document.addEventListener('DOMContentLoaded', (e) => { // DOM loaded
    imgContainer = document.getElementById('img');
    txtContainer = document.getElementById('txt');
    slide();
});

let imgContainer;
let txtContainer;

function slide(){ // change image every 2 seconds
    updateSlider(getImg());
    setTimeout(() => {
        slide();
    }, 2000);
}

function getImg(){ // get a random image by using AJAX
    const xhReq = new XMLHttpRequest();
    xhReq.open("GET", "/img", false);
    xhReq.send(null);
    return JSON.parse(xhReq.response);
}

function updateSlider(img){
    const { filePath, fileName } = img;
    imgContainer.src = filePath; // update image
    txtContainer.innerHTML = fileName; // update text
}

К сожалению, я получаю эту ошибку

enter image description here

Я использую Express, поэтому я определил статический каталог app.use(express.static(path.join(__dirname, 'public')));

, и это структура моего проекта

enter image description here

Что здесь не так?Я просто хочу создать слайдер, который получает изображения с сервера с дополнительной информацией, такой как имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...