我正在我的网站上实施 Adobe Creative SDK 产品以供管理使用;管理员能够访问特定图像(在首页滑块上使用)、编辑和保存。
问题是 Adobe 关于如何利用 onSave() 回调函数的文档非常模糊。我不得不去旧网站 Aviary 寻找答案,但即使在那里也很模糊。
首先,我使用 MySql DB 查询从服务器上提取图像(滑块中至少有 2 个图像,所以我希望它是数据库驱动的而不是静态的)。图像以文件的形式存储在数据库中。
其次,一旦图像显示在页面上(所有图像都显示在管理页面上,以及文本覆盖、链接等),管理员可以单击图像并调用 Adobe Creative SDK 并显示编辑器窗口. 都好。
第三,编辑完成后,管理员可以点击“保存”,他的编辑内容会临时保存到Adobe云中(编辑后的图像会替换页面上的原始图像)。我需要的是图像也保存在我的服务器上,覆盖原始图像(我不想进行数据库更新 - 太多额外的工作)。
这就是 Adobe 和 Aviary 的模糊说明没有帮助的地方。
这是我的代码...
(这些是 Adobe Creative SDK 的功能):
var featherEditor = new Aviary.Feather({
apiKey: 'myapikey',
theme: 'dark', // Check out our new 'light' and 'dark' themes!
tools: 'all',
appendTo: '',
onSave: function(imageID, newURL) {
var img = document.getElementById(imageID);
img.src = newURL;
},
onError: function(errorObj) {
alert(errorObj.message);
}
});
function launchEditor(id, src) {
featherEditor.launch({
image: id,
url: src
});
return false;
}
基本上每个加载的图像都在<img>
标签中包含一个 onclick 事件,如下所示:
<a href="#" onclick="return launchEditor('editableimage<?php echo $srow->id ?>', 'http://www.3yearlectionary.org/assets/slider/<?php echo $srow->sld_image ?>');"><img id="editableimage<?php echo $srow->id ?>" src="assets/slider/<?php echo $srow->sld_image ?>" /></a>
这将调用 launchEditor 函数并显示编辑器。单击 Save 时,除其他几件事外,还会触发 onSave() 回调,并且在该回调函数中,我可以在本地保存图像。
但是 Adobe 仅提供以下示例来完成此操作,它们对我来说毫无意义:
首先,这似乎需要添加到 onSave() 函数中:
$.post('/save', {url: newURL, postdata: 'some reference to the original image'})
我假设'/save'实际上是我用来完成工作的php脚本......或者它可能是服务器上保存图像的位置......不确定。'postdata' 说它需要“对原始图像的一些参考”,但我真的不知道如何得到它。我尝试使用launchEditor() 函数中的“url”,因为它似乎已传递给featherEditor,但这不起作用,当我执行alert() 时它只是返回了一个空值。
如果有人可以帮我解决这个问题,我可以轻松地处理服务器端的 php 来进行保存。但我只是不知道如何获取 Adobe 保存的新图像以覆盖我服务器上的旧图像。谢谢!