javascript - 在节点中使用“请求”从 URL 下载图像作为缓冲区,然后作为 varbinary(max) 插入 SQL 数据库
问题描述
我正在使用 google/facebook/ms Oauth 对用户进行身份验证,然后给他们一个刷新令牌。然后,我使用这个长期存在的刷新令牌来请求短期访问令牌。
我遇到的问题是我的应用程序使用社交资料的照片显示在前端,但社交令牌过期后 URL 将停止工作。
我正在尝试将用户的个人资料照片作为 varbinary(max) 保存到 MSSQL DB,然后使用访问令牌将其返回到前端。
到目前为止,这是我的代码:
但我不确定如何从缓冲区而不是 base64 字符串中获取二进制文件?
request.get(
{ url: req.user._json.picture, encoding: null },
function(err, res, buffer) {
res.on('close', () => {
theRes.send(buffer.toString('base64'));
return buffer.toString('base64');
knex('USERS')
.update({ photo: photo })
.where({ id: req.user.dbUserID })
.then(() => {
console.log('PHOTO UPDATED');
console.log(res);
console.log(photo);
})
.catch(err => {
console.log('ERROR ADDING PHOTO TO DATABASE');
console.log(err);
});
});
});
}
);
编辑:这与如何从异步调用返回响应不同,我知道该怎么做,而且我已经在代码示例中这样做了,你到底为什么要把它标记为那个的副本???
解决方案
它可以存储为 base64 字符串,因为它更易于处理,但最后我只是潜入并实现了 blob 存储,因为在生产数据库中存储实际文件从来都不是一个好主意。
推荐阅读
- java - 当我在浏览器中输入网址时,无法打开即时应用程序
- python - 我如何使用 python 协程作为 celery 任务
- java - 获取 java.lang.OutOfMemoryError:尝试读取大 excel 文件(.xlsx)时超出 GC 开销限制
- java - 为什么不传输我在 Web 服务中定义的模型列表作为方法的输出?
- javascript - 使用条件语句运行 for 循环,地图不起作用
- c++ - C ++:在重新定义时检查/断言定义的常量
- c++ - 如何使用 unique_ptr 编写用于在容器上搜索的传出引用
- python-3.x - Python 每次调用 write 都会在屏幕上输出一个数字
- python-3.x - 如何修复 AttributeError:模块 'botocore.vendored.requests' 没有属性 'Post' Traceback
- excel - 如何将单元格格式固定为日期(使用 YYYYMMDD 格式)并且不允许使用文本