您的位置:

图床API详解

一、介绍

图床API是一个用于实现图片上传、图片管理、图片展示等功能的接口。通过对API的调用,开发者可以将自己的图片上传至图床服务器,获得一个可以访问到图片的URL链接,从而实现图片在网站内的使用。

目前,市面上有很多免费或付费的图床服务,它们提供丰富的API接口,例如:阿里云OSS、腾讯云COS、七牛云存储、又拍云等。在这些API中,数据的安全传输和存储是关键和首要的问题。

下面将着重介绍七牛云存储开放的API接口。

二、上传图片

API的第一步是上传图片。HTTP POST请求是上传图片的标准方式。上传图片前,需要先获取到一个上传凭证。凭证中包含了上传所需的key、token、domain等信息,其中key是上传对象的唯一标识符,token是对上传数据的身份验证,domain是七牛云账户下存储该文件的空间域名。获取凭证的API回调函数如下:


function getUploadToken(){
  //请求获取上传凭证
  $.ajax({
    url: "https://api.qiniu.com/uptoken",
    type: "POST",
    headers: {
      "Authorization": "UpToken your_access_token_here"
    },
    success: function(data){
      //获取上传凭证
      var upload_token = data.uptoken;
      console.log(upload_token);
    },
    error: function(err){
      console.log(err);
    }
  });
}

获取上传凭证后,开发者可以通过以下函数来实现图片的上传:


function uploadImage(file){
  var upload_token = "your_access_token_here";
  //上传图片
  var xhr = new XMLHttpRequest();
  xhr.open('POST', 'https://up-z2.qiniup.com', true);
  var formData, key, putExtra, config;
  key = null;
  formData = new FormData();
  putExtra = {};
  config = {};
  formData.append('file', file);
  xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
      var res = xhr.responseText;
      console.log(res);
    }
  }
  xhr.upload.addEventListener("progress", function(evt){
    if (evt.lengthComputable) {
      var percentComplete = Math.round(evt.loaded * 100 / evt.total);
      console.log(percentComplete);
    }
  }, false);
  xhr.send(formData);
}

其中,file为上传的图片文件对象。上传完成后,返回的数据包含了上传图片的key值和imageUrl链接,可以将这些信息记录下来,以便日后的图片管理和展示。

三、管理图片

通过API接口,可以实现对图片的管理,例如:删除、更新、查找等操作。

删除图片是一项基本但必须的操作,以下是删除图片的API函数:


function deleteImage(key){
  //删除图片
  $.ajax({
    url: "https://rs.qiniu.com/delete/"+Base64.encodeURI(key),
    type: "POST",
    headers: {
      "Authorization": "UpToken your_access_token_here"
    },
    success: function(data){
      console.log(data);
    },
    error: function(err){
      console.log(err);
    }
  });
}

以上函数输入的参数key为要删除图片的唯一标识。另外,还可以通过以下函数来更新图片:


function updateImage(key, newDataBlob){
  //更新图片
  $.ajax({
    url: "https://up-z2.qiniup.com/put/"+Base64.encodeURI(key),
    type: "POST",
    headers: {
      "Authorization": "UpToken your_access_token_here",
      "Content-Type": "application/x-www-form-urlencoded"
    },
    data:newDataBlob,
    success: function(data){
      console.log(data);
    },
    error: function(err){
      console.log(err);
    }
  });
}

以上函数输入的参数key为要更新图片的唯一标识,newDataBlob为新的图片数据流。

通过以下函数,可以查找所有上传图片的数据:


function findImage(page,limit){
  //查找所有图片
  $.ajax({
    url: "https://rs.qiniu.com/list/"+Base64.encodeURI("your_bucket_name_here")+ "?marker=" + page + "&limit=" + limit,
    type:"GET",
    headers: {
      "Authorization": "UpToken your_access_token_here"
    },
    success: function(data){
      console.log(data);
    },
    error: function(err){
      console.log(err);
    }
  });
}

以上函数输入的参数page是分页的页码,limit是每页的限制记录数。通过这个函数,可以将分页后的所有图片URL链接取出,供网站前台的图片展示使用。

四、展示图片

图床API最重要的功能之一就是图片的展示。实际上,我们需要将图片展示在网站的前台,展示效果好坏会直接影响到网站的用户体验。在这里,我们可以采用七牛云存储提供的图片处理功能,包括图片的缩略图生成、水印、颜色调整等。例如,我们可以用以下函数将图片生成缩略图:


function generateThumbnail(url, width, height){
  //生成缩略图
  var thumbnail_url = url + "?imageView2/0/interlace/1/format/jpg/w/"+ width +"/h/"+height+"|imageslim";
  return thumbnail_url;
}

其中url是原始的图片链接,width和height为缩略图的宽和高。类似的,我们可以通过API来实现图片的水印功能。

五、总结

从图床API的介绍、图片上传、图片管理到图片展示,这篇文章分别阐述了各项功能的实现思路和具体API调用方法。通过这些函数的调用,可以实现一个丰富、高效、安全的图片管理和展示功能。但是,在实际开发过程中,还需要注意更多的细节和问题,例如:图片的质量、流量的控制、数据的备份等。因此,在实际开发中,我们需要深入了解图床API,结合实际需求进行适量的调整和优化。同时,API提供方也需要不断的提高API性能,确保API的稳定性、安全性和可靠性。