我们想开发一个小部件来将图像上传到容器。这是一个非常有据可查的任务:
1.-对象存储教程
2.- 防火墙-Wiki
有了这一切,您可以设法获取(下载)、上传、删除容器中的文件。这个比较清楚。
另一方面,我们想开发另一个小部件来显示存储在容器中的图像。我想用这样的方式向他们展示:
<img src="public_object_url"/>
但我不知道该怎么做。我从哪里得到这个公共 URL?有公开网址吗?它是否在上传过程中进入某个步骤?
我有点迷失了如何做到这一点。任何帮助将不胜感激。
提前致谢。
编辑 1
下载图像后,我们会被阻止显示图像。
查看“img”标签内部显示了这一点:
URL.createObjectURL() 返回的字符串是什么。如果我们查看这个链接,浏览器会显示:
我们已经解码了属性“value”中的字符串,图像就在那里!
为了从对象存储服务器获取图像,我们使用了非常相似的代码,该代码在运算符 Álvaro 中推荐使用。
objectstorage.getFile( containerName,
reports[i].urlImagen,{
token: token,
onSuccess: onGetFileSuccess.bind(null, i),
onFailure: onGetFileFailure
});
function onGetFileSuccess(index, picture){
downloadedPicsCont--;
reports[index].urlImagen = URL.createObjectURL(picture);
if(!(downloadedPicsCont > 0)){
MashupPlatform.wiring.pushEvent('reports_output', JSON.stringify(reports));
}
}
图片变量具有以下结构,似乎也可以。
这是怎么回事?
编辑 2
最后,我们找到了原因。我们下载的是直接从云端创建的图像,而不是使用 objectStorageAPI。在您从云上传图像时,当您下载它们时,您会将它们放入 cdmi 对象中,因此 URL.createObjectURL 无法按预期工作。另一方面,如果您使用 objectStorageAPI 上传它们,则在下载它们时,它们以原始格式出现,因此该方法可以正常工作。