Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在KeystoneJS中上载S3文件_Node.js_Express_Amazon S3_Keystonejs - Fatal编程技术网

Node.js 如何在KeystoneJS中上载S3文件

Node.js 如何在KeystoneJS中上载S3文件,node.js,express,amazon-s3,keystonejs,Node.js,Express,Amazon S3,Keystonejs,我有一个叫做style的项目,它有两个属性,一个是原始css文本,另一个是 我想用css文本的内容更新 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.wr

我有一个叫做style的项目,它有两个属性,一个是原始css文本,另一个是

我想用css文本的内容更新

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属性是未定义的,我知道,但是我如何创建一个新文件并将其分配给该属性,以及如何上载该文件?

我发现了如何使用Keystone附带的updateHandler。但他们仍然在使用express 3.x中的req.files

//快速文件生成器
函数writeToFile(文件名、txt、ext、回调){
var rndm=crypto.randomBytes(20).toString('hex'),file_path='/tmp/css_temp'+rndm+'.+ext,the_file={};
fs.writeFile(文件路径、txt、函数(错误){
如果(错误){
回调(null,err);
}
var stats=fs.statSync(文件路径);
var fileSizeInBytes=stats[“size”];
_file.path=文件路径;
_file.name=fileName+'..+ext;
_file.type='text/'+ext;
_file.size=fileSizeInBytes;
log(“文件被缓存了!”);
回调(_文件,err);
});
}
...
/**
*按ID更新样式
*/
exports.update=功能(请求、恢复){
变量数据=(req.method='POST')?req.body:req.query;
Style.model.findById(data.\u id).exec(函数(err,item){
if(err)返回res.apierro(“数据库错误”,err);
如果(!item)返回res.apirerror('notfound');
writeToFile(item.slug,data.css,'css',函数(请求文件,错误){
if(err)返回res.apierro(“文件缓存期间的更新错误”,err);
请求文件['cssFile_upload']=req_文件;
item.getUpdateHandler(req).进程(数据,函数(err){
if(err)返回res.apierro(“更新错误”,err);
res.Api回应({
成功:真的
});
});//结束进程
});//结束写入文件
});

};
How/where-you calling
uploadCSStoAmazon()
?我刚刚编辑了这个问题,以展示如何调用这个函数。
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);