私のノード(sails js)プロジェクトでHTML文字列を画像に変換してS3バケットにアップロードします。ローカルマシンで実行すると、イメージが生成され、イメージをs3バケットにアップロードできます。しかし、EC2インスタンス(Ubuntu 16)で同じコードを実行すると、うまくいきません。それはイメージを作成せず、したがって何もアップロードされません。Node-webshot - サーバー上で画像が生成されていませんが、同じコードがローカルに画像を生成します
は、ここに私のコードです -
var htmlString = '<div>a long html string</div>';
webshot(htmlString,'img.png', options, function(err) {
fs.readFile('img.png', function (err, data){
if(err){
console.log('error reading file');
}else{
var params = {
Bucket: bucket,
Key: 'customPNGs/'+'img.png',
Body: data,
ACL: 'public-read',
ContentType: 'image/png'
};
s3.putObject(params, function (err, res) {
if (err) {
sails.log.error("Error uploading data: ", err);
} else {
console.log('uploaded')
}
});
}
});
私はストリームを使用してS3に直接アップロードをやってみましたが、それは0キロバイトのファイルをアップロードします。ここに私のコードは、ストリームを使用している -
var renderStream = webshot(quitImageHTML, null, options);
var ss = '';
renderStream.on('data', function(data) {
ss+=data.toString('binary');
});
renderStream.on('end', function() {
//upload using the above code
});