html - ASP.NET Base64 图像源无法正确显示。
问题描述
我通过 Lambda 函数从 Azure 活动目录获取 Base64 字符串。这代表用户的个人资料图片。然后我试图在 ASP.NET 页面中显示它。它不工作。
这是 ASP.NET(引用的 HTML 对象是 ASP 文字)
using (var client = new AmazonLambdaClient(Amazon.RegionEndpoint.APSoutheast2))
{
var request = new InvokeRequest
{
FunctionName = ConfigurationManager.AppSettings["lambdaArnPrefix"] + "lambda-wlyw-GetAzureAdUserThumbnail",
Payload = "\"" + Context.User.Identity.Name.ToString() + "\"",
InvocationType = InvocationType.RequestResponse
};
var response = client.Invoke(request);
string result;
using (var sr = new StreamReader(response.Payload))
{
result = sr.ReadToEnd();
}
dynamic userThumbnail = JsonConvert.DeserializeObject(result);
photo.Text = "<img src='data:image/jpg;base64," + userThumbnail.base64Image + "' width='100' height='100'/>";
但是,该页面显示损坏的图像图标。如果我查看源代码,我觉得还可以吗?如果我使用在线转换器,base64 字符串会解码为图像:
<div class="panel-group">
<div class="panel panel-primary">
<div class="panel-heading">James Matson - Excellence<i class="fa fa-certificate pull-right"></i></div>
<img src='data:image/jpg;base64,eyJvZGF0YS5lcnJvciI6eyJjb2RlIjoiUmVxdWVzdF9SZXNvdXJjZU5vdEZvdW5kIiwibWVzc2FnZSI6eyJsYW5nIjoiZW4iLCJ2YWx1ZSI6IlJlc291cmNlICd0aHVtYm5haWxQaG90bycgZG9lcyBub3QgZXhpc3Qgb3Igb25lIG9mIGl0cyBxdWVyaWVkIHJlZmVyZW5jZS1wcm9wZXJ0eSBvYmplY3RzIGFyZSBub3QgcHJlc2VudC4ifX19' width='100' height='100'/>
解决方案
找出问题所在 - 向所有人道歉。事实证明,我的缓存凭据不存在,这意味着从 Lambda 函数返回的 Base64 字符串实际上不是图像,而是来自 Azure AD 的错误代码,即:
{"odata.error":{"code":"Request_ResourceNotFound","message":{"lang":"en","value":"Resource 'thumbnailPhoto' does not exist or one of its queried reference-property objects are not present."}}}
一旦我正确登录,图像就会工作 - 所以如果有人想要一个如何实现这一点的工作示例,请使用上面的:)
推荐阅读
- javascript - 指定值“。” 无法解析,或超出范围
- python - 尝试在 Python 中将文本转换为嵌套字典
- javascript - 无法获取/帖子
- mongodb - 索引查询计数能否触发“Mongo 查询目标:扫描对象/返回”警报?
- csv - 双引号值不再转义 CSV 中的逗号
- java - Java ForkJoinPool 线程限制还是 Java 流替代?
- google-bigquery - 使用云控制台将 csv 文件加载到 BQ 表
- html - 如何在 CSS 伪元素之前/之后控制图像
- python-3.x - 未找到模块没有名为“安全”烧瓶的模块
- watchos - 在应用程序打开时在 watchOS 上检测新的一天