Sure, here's an example program in Node.js using Express and EJS to recursively scan a directory and serve a nested list of files and folders as a webpage:

const express = require('express');
const path = require('path');
const fs = require('fs');
const ejs = require('ejs');

const app = express();

// Define the directory to scan
const directoryPath = './public';

// Define the EJS template
const template = `
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Directory Listing</title>
  </head>
  <body>
    <h1>Directory Listing</h1>
    <ul>
      <% for (var i = 0; i < files.length; i++) { %>
        <% var file = files[i]; %>
        <% if (file.isDirectory) { %>
          <li><%= file.name %></li>
          <ul>
            <% for (var j = 0; j < file.files.length; j++) { %>
              <% var subFile = file.files[j]; %>
              <li><%= subFile %></li>
            <% } %>
          </ul>
        <% } else { %>
          <li><%= file.name %></li>
        <% } %>
      <% } %>
    </ul>
  </body>
</html>
`;

// Define the function to scan the directory recursively
function scanDirectory(directoryPath) {
  const files = [];
  const fileNames = fs.readdirSync(directoryPath);
  for (let i = 0; i < fileNames.length; i++) {
    const fileName = fileNames[i];
    const filePath = path.join(directoryPath, fileName);
    const stats = fs.statSync(filePath);
    if (stats.isDirectory()) {
      const nestedFiles = scanDirectory(filePath);
      files.push({ name: fileName, isDirectory: true, files: nestedFiles });
    } else {
      files.push({ name: fileName, isDirectory: false });
    }
  }
  return files;
}

// Define the route to serve the directory listing
app.get('/', function(req, res) {
  const files = scanDirectory(directoryPath);
  const html = ejs.render(template, { files: files });
  res.send(html);
});

// Start the server
app.listen(3000, function() {
  console.log('Server listening on port 3000.');
});

To use this program, create a directory named public in the root of your project, and put some files and folders inside it. Then run the program using the command node app.js (assuming the program is saved as app.js). Finally, open your web browser and navigate to http://localhost:3000 to see the directory listing.
แน่นอนว่านี่คือตัวอย่างโปรแกรมใน Node.js ที่ใช้ Express และ EJS เพื่อสแกนไดเรกทอรีแบบวนซ้ำและให้บริการรายการไฟล์และโฟลเดอร์ที่ซ้อนกันเป็นหน้าเว็บ: const express = need('express'); เส้นทาง const = ต้องการ ('เส้นทาง'); const fs = ต้องการ('fs'); const ejs = ต้องการ('ejs'); แอป const = ด่วน (); // กำหนดไดเร็กทอรีที่จะสแกน const directoryPath = './public'; // กำหนดเทมเพลต EJS const template = ` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>รายชื่อไดเรกทอรี</title> </head> <body> <h1> รายการไดเร็กทอรี</h1> <ul> <% for (var i = 0; i < files.length; i++) { %> <% var file = files[i]; %> <% if (file.isDirectory) { %> <li><%= file.name %></li> <ul> <% สำหรับ (var j = 0; j < file.files.length; j++) { %> <% var subFile = file.files[j]; %> <li><%= ไฟล์ย่อย %></li> <% } %> </ul> <% } อื่น ๆ { %> <li><%= file.name %></li> <% } % > <% } %> </ul> </body> </html> `; // กำหนดฟังก์ชันเพื่อสแกนไดเร็กทอรีแบบเรียกซ้ำ ฟังก์ชั่น scanDirectory(directoryPath) { const files = []; const fileNames = fs.readdirSync(เส้นทางไดเรกทอรี); สำหรับ (ให้ i = 0; i < fileNames.length; i++) { const fileName = fileNames[i]; const filePath = path.join (เส้นทางไดเรกทอรี, ชื่อไฟล์); สถิติ const = fs.statSync(filePath); ถ้า (stats.isDirectory()) { const NestedFiles = scanDirectory(filePath); files.push ({ ชื่อ: ชื่อไฟล์, isDirectory: จริง, ไฟล์: NestedFiles }); } อื่น ๆ { files.push ({ ชื่อ: ชื่อไฟล์, isDirectory: false }); } } ส่งคืนไฟล์; } // กำหนดเส้นทางเพื่อให้บริการรายการไดเรกทอรี app.get('/', function(req, res) { const files = scanDirectory(directoryPath); const html = ejs.render(template, { files: files }); res.send(html); }); // เริ่มต้นเซิร์ฟเวอร์ app.listen(3000, function() { console.log('Server Listening on port 3000.'); }); หากต้องการใช้โปรแกรมนี้ ให้สร้างไดเร็กทอรีชื่อ public ในรากของโปรเจ็กต์ของคุณ และใส่ไฟล์และโฟลเดอร์บางส่วนไว้ข้างใน จากนั้นรันโปรแกรมโดยใช้คำสั่ง node app.js (สมมติว่าโปรแกรมถูกบันทึกเป็น app.js) สุดท้าย เปิดเว็บเบราว์เซอร์ของคุณแล้วไปที่ http://localhost:3000 เพื่อดูรายการไดเรกทอรี
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence