如何使用 Node.js 上传文件夹并保持文件夹结构?

Ste*_*fan 5 html javascript file-upload node.js multer

我目前正在尝试使用 Node.js 构建一个文件上传器,它对于单个文件和多个文件都可以正常工作,但我需要上传文件夹。上传文件夹中的文件夹结构应保持完整。

基本上我想要的是一个上传器,供玩家上传他们的文件夹,以便我可以在后端使用它们。

我按照本教程让它可以处理单个和多个文件:https://www.youtube.com/watch? v=ysS4sL6lLDU

我不明白如何上传文件夹,我可以在输入中输入“webkitdirectory mozdirectory”,但它只是上传文件夹内容并删除文件夹结构。

这是我的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Blank File Uploader</title>
</head>
<body>
    <div class="uploader">
        <h1>File Upload</h1>
        <form action="/upload" method="POST" enctype="multipart/form-data">
            <input type="file" name="files" webkitdirectory mozdirectory multiple>
            <button>Submit</button>
        </form>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
const express = require('express');
const multer = require('multer');
const uuid = require('uuid').v4;

const storage = multer.diskStorage({ 
    destination: (req, file, cb) => {
        cb(null, 'uploads');
    },
    filename: (req, file, cb) => {
        const { originalname } = file;
        cb(null, originalname);

        
    }
})
const upload = multer({ storage });

const app = express();
app.use(express.static('public'));

app.post('/upload', upload.array('files'), (req, res) => {
    return res.json({
        status : 'OK',
        uploaded: req.files.length,
        fileName: req.files
    })
    console.log('Start decompressing!');
    decompress(upload.storage, 'dist').then(files => {
        console.log('done!');
    });
});

app.listen(3001, () => console.log('App is listening...'));
Run Code Online (Sandbox Code Playgroud)

其他公司是如何做到这一点的?

我尝试上传 zip 文件并使用 node.js 解压缩,但无法正常工作。有什么方法可以上传整个文件夹,或者我必须在上传之前将其压缩吗?

请帮帮我。

非常感谢!