node.js - 使用 aws lambda 和 node.js 在 API 端点上显示图像
问题描述
现在我正在编辑 AWS lambda 上的内联代码。这是我目前拥有的:
var qrImage = require('qr-image');
exports.handler = async (event) => {
return sendRes(200,'hi');
};
/*
const sendRes = (status, body) => {
var response = {
statusCode: status,
headers: {
"Content-Type": "text/html"
},
body: body
};
return response;
};
*/
const sendRes = (status, body) => {
const svg_string = qrImage.imageSync('http://www.nodejs.org',{ type: 'png', size: 20 });
var response = {
statusCode: status,
headers: {
"Content-Type": "image/jpeg"
},
body: svg_string
};
return response;
};
这将输出文本内部服务器错误。
下面的代码创建一个 png 文件并存储它。我想要的 lambda 功能是在我访问端点时简单地显示图像(不涉及保存)。但我不确定如何去做(Lamda 的新手,Node.js)。我到底应该调查什么?
var qrImage = require('qr-image');
var fs = require('fs');
qrImage
.image("http://www.nodejs.org", {type:'png', size:20})
.pipe(fs.createWriteStream("MyQRCode.png"));
编辑 我做了一些小改动,这似乎正在工作
var qrImage = require('qr-image');
exports.handler = async (event) => {
return sendRes(200,'hi');
};
const sendRes = (status, body) => {
const svg_string = qrImage.imageSync('this is AWS!', { type: 'svg', size: 10 });
var response = {
statusCode: status,
headers: {
"Content-Type": "image/svg+xml"
},
body: svg_string
};
return response;
};
解决方案
如果您只是在 lambda 的帮助下返回图像,那么同步也将起作用,这里是它的代码
const sendRes = (status, body) => {
const svg_string = qr.imageSync('http://www.nodejs.org', { type: 'png', size: 20 });
var response = {
statusCode: status,
headers: {
"Content-Type": "image/jpeg"
},
body: svg_string
};
return response;
};
推荐阅读
- linux - 如何在输出文件中包含来自 Nmap 脚本的注释
- javascript - 如何使用正则表达式在 javascript 中通过逗号或换行符分割字符串?
- azure - 在 azure AD 中使用 azure app 注册的使用详情 api
- mlt - 裁剪过滤器不适用于混合过渡?
- visual-studio - Xamarin 表单启动器
- file - 获取 UNIX-LIKE 系统上可执行文件的供应商
- javascript - 在 RGB 颜色上创建图案
- c# - Windows.Graphics.Capture.Direct3D11CaptureFrame 到 OpenCvSharp::Mat 的转换
- javascript - Safari 中未加载 JavaScript/HTML5 画布
- php - laravel如何插入多行,需要解释