如何解决使用nano和multipart函数在CouchDB的名称中添加带有特殊字符的附件
我有一个express的nodeJS后端应用程序。 我的数据库是CouchDB数据库,我使用nano与之通信。
db.multipart.get(docname,[params],[callback])
因此,我创建了一个带有附件的数组:
req.files.forEach((f) => {
attachments.push({
name: encodeURI(f.filename),data: fs.readFileSync(f.path),content_type: f.mimetype
});
});
然后我发送请求:
db.multipart.insert(myDoc,attachments,doc.id)
.then((result) => {
myDoc._rev = result.rev;
res.status(201).json({message: 'myDoc saved'});
})
.catch(error => {
res.status(400).json({ error })
});
"_attachments": {
"file1.pdf": {
"content_type": "application/pdf","revpos": 2,"digest": "md5-lsochTTIIFKlz9PghGzHLg==","length": 118312,"stub": true
},"file2.png": {
"content_type": "image/png","digest": "md5-keuzOCt80kB4fJhtJf0A4w==","length": 472215,"stub": true
}
}
const readstream = db.attachment.getAsstream(req.params.id,encodeURI(req.params.filename));
readstream.pipe(res);
如果文件名没有特殊字符,则效果很好。但是,如果文件名中有一个特殊字符,例如'é'(即使带有encodeURI函数),我也不会取回该文件。我有这个错误:
{“错误”:“未找到”,原因:“文档缺少附件”}
我认为使用encodeURI函数可以解决该问题,但是无论是否有encodeURI函数,它都是相同的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。