【发布时间】:2021-08-31 18:12:28
【问题描述】:
我为 heroku 部署了一个 API。它的功能之一是文件上传。我创建了一个名为“uploads”的静态文件夹,并使用 multer 包上传文件。
app.use('/api/uploads', uploadRouter);
app.use('/uploads', express.static(path.join(__dirname, '/uploads')));
以上代码 sn-p 来自 server.js。下面是路由器和复用器的设置。
const storage = multer.diskStorage({
destination(req, file, cb) {
cb(null, 'uploads/');
},
filename(req, file, cb) {
cb(null, `${Date.now()}.jpg`);
},
});
const upload = multer({ storage });
uploadRouter.post('/', upload.single('image'), (req, res) => {
res.send(`https://app.herokuapp.com/${req.file.path}`);
});
uploadRouter.post('/imgs', upload.array('images'), (req, res) => {
try{
let filesArray = [];
req.files.forEach(file => {
filesArray.push(`https://app.herokuapp.com/${file.path}`)
})
res.status(201).send(filesArray);
}catch(error) {
res.status(400).send(error.message);
}
});
有些事情告诉我,我的方法远非理想。但是,在我介绍了多文件上传之前,它曾经非常完美。现在,上传后的图像会在那里停留一段时间(我可以通过https://app.herokuapp.com/uploads/1623782012131.jpg 之类的链接访问它们)并在几分钟内消失。然后,这些 URL 会抛出以下内容:
Cannot GET /uploads/1623782012131.jpg
问题是我之前在引入多个文件上传之前上传的图像仍然可以访问。我认为这与 heroku 文件大小限制有关,但事实并非如此,因为我只使用了 500mb 中的大约 50mb。可能是什么原因?
【问题讨论】:
标签: node.js express http heroku multer