Node.js 如何在KeystoneJS中上载S3文件
我有一个叫做style的项目,它有两个属性,一个是原始css文本,另一个是 我想用css文本的内容更新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
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 callinguploadCSStoAmazon()
?我刚刚编辑了这个问题,以展示如何调用这个函数。
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);