所以目前我的网站正在加载一个JSON文件从我的服务器,寻找它需要的数据,然后显示在屏幕上,以及下载和显示与该信息相关的图像从公共API。我想知道如何将API下载的图像存储到我自己的服务器数据库中,所以在每次获取图像之前,它会检查我的服务器中的图像,如果它不存在,它会去公共API下载并存储到我的服务器数据库中?
下面的代码是一个示例,当加载站点时,它从JSON中提取随机卡片并显示其信息以及图像。我想从api下载图像,将其存储在我的服务器数据库中,然后在下载之前检查所述图像,以减少api调用到最小。
function RandomCard() {
const RC = Math.floor(Math.random() * cardAPIListings.data.length);
var cardShowcase = document.getElementById("randomcardshowcase");
var randomCardImage = document.getElementById('randomImage');
switch (cardAPIListings.data[RC].type) {
case "Spell Card":
case "Trap Card":
cardShowcase.innerHTML = '"' +cardAPIListings.data[RC].name + '"' + '<br><br>' + '[' +
cardAPIListings.data[RC].race + ' / ' + cardAPIListings.data[RC].type + ']' + '<br>' +
'Attri: ' + cardAPIListings.data[RC].attribute + '<br><br>' + 'Effect: ' + '<br>' +
cardAPIListings.data[RC].desc;
randomCardImage.src = cardAPIListings.data[RC].card_images[0].image_url;
break;
编辑:我使用的PUBLIC API是这样写的:
[卡片图像。直接从我们的服务器而不是我们的谷歌云存储库中提取卡片图像的用户将立即被列入黑名单。
卡片图像可以从我们的谷歌云服务器上拉,但请只拉一个图像一次然后将其存储在本地(I Assume this means Store it in your Own Server/API Database)
。如果我们发现您每秒提取非常高的图像量,那么您的IP将被列入黑名单并被封锁。]
所以我需要一种方法来存储图像在我自己的位置,因为他们正在从公共API下载,所以我不被列入黑名单。
除非我误解了您的问题,否则只将图像和其他二进制数据存储到文件系统中。没有理由给数据库增加大量二进制数据的负担。只在数据库中存储文件链接(或URL)。