首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeystoneJS云图上传

KeystoneJS云图上传
EN

Stack Overflow用户
提问于 2016-05-23 17:27:39
回答 2查看 1.1K关注 0票数 0

我正在使用最新版本的KeystoneJS,并且有一个表单可以将记录添加到数据库中。我在上传图片时遇到了问题。

我的模型包含:

代码语言:javascript
复制
heroImage: { type: Types.CloudinaryImage, autoCleanup : true },

我的表单包括:

代码语言:javascript
复制
<input type="file" accept="image/*" id="heroImage" name="heroImage_upload" className='field-upload'>

我的保存表单的中间件包括:

代码语言:javascript
复制
view.on('post', {action: 'save'}, function(next) 
{
    var newProperty = new Property.model(req.body);

    console.log(newProperty);
    newProperty.save(function(err, body) 
    {});
});

这对于除了文件上传之外的所有字段都很有效。

我试着添加:

代码语言:javascript
复制
    newProperty.heroImage = req.files['heroImage'];

这会使heroImage为null。

我还尝试创建一个cloudinaryImage,但这导致了一个错误:

代码语言:javascript
复制
var img = new CloudinaryImage(req.files['heroImage']);

当我使用KeystoneJS管理仪表板上传图片时,一切都很正常。有人能解释一下我应该如何在我自己的表单中使用cloudinaryImage字段类型吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-05-24 17:10:09

我不确定这是否会有帮助,但在文档的底部有一个注释:http://keystonejs.com/docs/database/#fieldtypes-cloudinaryimage

请记住,如果要使用超文本标记语言表单将图像上载到CloudinaryImage字段,则需要在form标记中指定enctype="multipart/form-data"

你有没有在你的表格中包括这一点?

更新:

因此,假设您的模型名为MyModel,并且表单数据使用与您的模型相同的对象键,则以下方法应该有效。(例如,您的heroImage字段的图像应该在POST数据中作为heroImage提供)。

代码语言:javascript
复制
var MyModel = keystone.list('MyModel');

view.on('post', {action: 'save'}, function(next) 
{
   var item = new MyModel.model();
   data = req.body;
   item.getUpdateHandler(req).process(data, function(err) {
      // Handle error
   }
}

然后,Keystone应该在内部处理所有特定的cloudinary内容。

票数 0
EN

Stack Overflow用户

发布于 2017-06-14 04:44:27

下面是一种使用cloudinary.v2完成此操作的方法

未经测试的keystone

代码语言:javascript
复制
cloudinary.v2.uploader.upload(base64_file_data, (err, result) => {

  var newMyModel = new MyModel.model(model_data);

  newMyModel.image = result;

  let updater = newMyModel.getUpdateHandler(req);

  updater.process(newMyModel, {
    fields: image
  }, err => {...})   
})

测试的mongoose

代码语言:javascript
复制
cloudinary.v2.uploader.upload(base64_file_data, (err, result) => {

  var newMyModel = new MyModel.model(model_data);

  newMyModel.image = result;

  newMyModel.save(err => {...})   
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37387309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档