在Node.js, Express和MongoDB环境中,以下是一个简化的示例,展示了如何在博客系统中共享PDF文件。
const express = require('express');
const mongoose = require('mongoose');
const fs = require('fs');
const path = require('path');
const pdfFilePath = path.join(__dirname, 'path', 'to', 'your.pdf');
// 连接到MongoDB数据库
mongoose.connect('mongodb://localhost:27017/blogdb', { useNewUrlParser: true });
// 创建博客文章模型
const PostSchema = new mongoose.Schema({
title: String,
content: String,
pdf: Buffer,
});
const Post = mongoose.model('Post', PostSchema);
const app = express();
const port = 3000;
// 将PDF作为附件发送
app.get('/share-pdf/:id', async (req, res) => {
try {
const post = await Post.findById(req.params.id);
if (post && post.pdf) {
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'inline; filename="shared.pdf"');
res.send(post.pdf);
} else {
res.status(404).send('PDF not found.');
}
} catch (error) {
res.status(500).send('Server error.');
}
});
// 启动服务器
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
在这个示例中,我们首先连接到MongoDB数据库,并定义了一个简单的博客文章模型,其中包含一个pdf
字段来存储PDF文件的二进制数据。然后,我们定义了一个Express路由/share-pdf/:id
,当访问这个路由时,它会根据提供的ID从数据库中检索PDF文件,并将其作为附件发送回客户端。
请注意,这个示例假设你已经有了一个运行中的MongoDB数据库,并且你的博客文章集合中已经有了包含PDF文件二进制数据的文档。实际应用中,你需要将PDF文件转换为二进制格式并存储到数据库中,这通常是通过前端表单上传完成的。