如何在KeystoneJS中上传S3文件

时间:2015-05-28 22:04:02

标签: node.js express amazon-s3 keystonejs

我有一个名为style的项目,它有2个属性,一个具有原始css文本,另一个具有S3File

Style.add({
  ...
  css: { type: Types.Code, language: 'css' },
  cssFile: {
    type: Types.S3File,
    s3path: 'uploads/assets',
  },
  ...
});

我想用css文本的内容更新S3File

function uploadCSStoAmazon(style) {
  // Store css code in temporal file (with a md5 name)
  var rndm = crypto.randomBytes(20).toString('hex'), file_path = '/tmp/css_temp_' + rndm + '.css';

  fs.writeFile(file_path, style.css, function(err) {
    if(err) {
      return console.log(err);
    }

    console.log("The file was saved!");

    // style.cssFile = new Types.S3File();

    // TODO upload file to amazon
    style.cssFile._.uploadFile(file_path, true, function(err, fileData){
      // TODO erase css file
    });
  });

}

...

var aStyle = new Style.model({
  ...
  css: 'Some css string',
  ...
});


...

uploadCSStoAmazon(aStyle);

我理解,cssFile属性是未定义的,但是如何创建新文件并将其分配给此属性,还可以上传文件?

1 个答案:

答案 0 :(得分:2)

我发现了如何使用Keystone附带的updateHandler。他们仍然使用req.files表格表达3.x.

Error:
Found no subterm matching "@fold_left (option stack) instr instrDenote'
                             (compile e1)
                             (@Some stack (@cons nat (expDenote e2) s))" in the current goal.