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 解压缩,但无法正常工作。有什么方法可以上传整个文件夹,或者我必须在上传之前将其压缩吗?
请帮帮我。
非常感谢!