gpt4 book ai didi

node.js - CouchDB/Cradle 如何添加图像?

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:37 24 4
gpt4 key购买 nike

所以基本上我想让用户在注册时可以选择上传图像。我永远不知道从哪里开始。我知道 CouchDB 支持附件,但它到底如何与 Cradle 配合使用。

我在 Cradle 的文档中找到了以下代码

saveAttachment: function (/* id, [rev], attachmentName, contentType, dataOrStream */) {

所以我知道它可以保存附件。那我该如何传递图像呢?我假设在 html 中,我必须使用

form(action='/upload', enctype='multipart/form-data', method='post')
input(type='file', name='upload')
input(type='submit', value='Upload')

但是我该去哪里呢?这一步不会将图像保存在服务器上的某个地方吗?然后我是否需要以某种方式获取图像的地址并将其传递到支架以将其作为附件保存在 CouchDB 数据库中。

如果您能帮助我,请先致谢!

最佳答案

您需要从表单中获取传入流,然后通过 Cradle 将流发送到 CouchDB .

将流发送到 Cradle 可能是最简单的事情。此示例展示了如何使用本地文件执行此操作:

db.saveAttachment( 
doc.id,
doc.rev,
attachmentId,
mimetype,
fs.createReadStream(path),
function( err, data ){
console.log(data);
}
);

我认为更棘手的一点是管理传入的文件。它们以多部分流的形式到达,而不是保存到文件中。我的偏好是将该代码外包给 formidable ,直接或间接通过connect-form如果您使用的是 Connect 或 Express。

我当前的连接表单代码可以总结为:

req.form.complete(function(err, fields, files){
if ( err ) // handle err
else
{
db.saveAttachment(
doc.id,
doc.rev,
attachmentId,
mimetype,
fs.createReadStream(files.name),
function( err, data ){
console.log(data);
}
);
}
});

这对于速度来说并不是最佳的,因为它在磁盘上创建一个实际的文件,而不是将数据从一个地方流式传输到另一个地方,但它很方便并且可以满足很多用例。

如果您正在处理图像上传,您应该注意的另一个包是 node-imagemagick,正如您从名称中所期望的那样,它是 ImageMagick 的 Node.js 包装器。

关于node.js - CouchDB/Cradle 如何添加图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5799350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com