小明: 嗨,小李,我最近在设计一个文档共享系统,想请教一下你。
小李: 当然可以,说说看,你遇到了什么问题?
小明: 我们需要一个系统来存储和分享项目文档。我想知道如何实现用户上传和下载文件的功能。
小李: 这听起来像是一个文件服务器的问题。我们可以使用Node.js和Express框架来处理这个任务。
小明: 好的,那你能给我一些代码示例吗?
小李: 当然,这里有一个简单的例子:
const express = require('express');
const fileUpload = require('express-fileupload');
const fs = require('fs');
const path = require('path');
const app = express();
app.use(fileUpload());
// 创建文件夹
function createDirIfNotExists(dir) {
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
}
// 上传文件
app.post('/upload', (req, res) => {
if (!req.files || Object.keys(req.files).length === 0) {
return res.status(400).send('No files were uploaded.');
}
let uploadFile = req.files.file;
let uploadPath = path.join(__dirname, 'uploads', uploadFile.name);
createDirIfNotExists(path.join(__dirname, 'uploads'));
uploadFile.mv(uploadPath, function(err) {
if (err)
return res.status(500).send(err);
res.send('File uploaded!');
});
});
// 下载文件
app.get('/download/:filename', (req, res) => {
const filePath = path.join(__dirname, 'uploads', req.params.filename);
if (fs.existsSync(filePath)) {
res.download(filePath);
} else {
res.status(404).send('File not found');
}
});
app.listen(3000, () => console.log('Server running on port 3000'));
小明: 看起来很不错!那我们怎么管理这些文件的元数据呢?比如版本控制、权限设置等。
小李: 对于元数据管理,我们可以使用数据库来记录每个文件的信息。例如,你可以使用MongoDB来存储文件名、上传者、创建时间、版本号等信息。
小明: 明白了,谢谢你的建议!
小李: 不客气,祝你项目成功!
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!