如何使用PHP将Base64格式的图片上传到七牛云存储?

介绍

七牛云存储是一个专为移动互联网应用设计的云端存储产品。通过七牛,我们可以快速搭建固定的图床,存储博客上需要分享的图片,或是为开发者未来的日常项目中的图片上传提供便利。

此文将详细阐述如何使用PHP语言实现将Base64格式的图片上传到七牛云存储。这是一个功能简单的图片上传案例,对于需要实现这个功能的开发者,本文不失为一个好的参考。

什么是 Base64

在开始之前,我们需要简单介绍一下Base64。

Base64是一种数据编码方法,可以把用64个字符表示的内容传输给电子邮件。Base64在许多不同应用上都有广泛的应用。七牛云存储就需要使用Base64将图片存入其平台。

PHP代码实现

下面我们将开始具体阐述如何使用PHP代码实现将Base64格式的图片上传到七牛云存储。我们需要用到七牛云存储的PHP SDK。首先可以从 Github 上下载七牛云存储的 PHP SDK 。

下面这段代码用于将 Base64 格式的图片上传到七牛云存储:

// 引入七牛云sdk

require_once(DIR . "/Qiniu/autoload.php");

use Qiniu\Auth;

use Qiniu\Storage\UploadManager;

$image = $_POST['image']; // 获取经过Base64解码后的字符串

$filename = time() . rand(10000, 99999); // 设置文件名,定以防覆盖

$key = $filename . '.png'; // 设置文件在七牛云生成的名称

// 配置密钥和存储空间名称

$auth = new Auth('', '');

$bucket = '';

// 生成上传凭证

$token = $auth->uploadToken($bucket);

$uploadMgr = new UploadManager();

// 使用 base64_decode 方法将字符串解码成图像,并且将其上传到七牛云中

list($ret, $err) = $uploadMgr->put($token, $key, base64_decode($image));

if ($err !== null) {

echo json_encode(['result' => 'fail', 'data' => '上传图片失败']);

exit;

} else {

// 获取生成图片地址

echo json_encode(['result' => 'success', 'data' => '/' . $key]);

}

在代码中,我们首先将POST请求中的Base64字符串获取到,然后设置上传文件的文件名及路径、密钥和存储空间等信息,生成上传凭证。接下来,我们使用七牛云存储 PHP SDK 中的“UploadManager”类,调用put()方法实现上传文件,并最终返回上传结果。

讲解

在这段代码中,我们使用time()结合rand()方法生成一个随机的、不重复的文件名,接着去获取$_POST['image']的值,也就是Base64编码的图片。

使用阿里云或七牛云,都需要引用它们的SDK包而进行对应操作。我们可以从代码中看,首先是引入 Namespace,接着是使用 use 关键字对其进行注册。其次,我们需要设置该文件在七牛云中存储所对应的名称,也就是 key 值。还有密钥、存储空间和上传凭证等信息。

接下来我们使用七牛云 SDK 中的“UploadManager”类,调用了其put()方法,上传经过 Base64 解码过的图片。在上传完成后,我们可以从返回结果中获取到我们所上传图片的地址,进而记录在数据库中,或是直接渲染到页面中。

总结

通过这篇文章的学习我们应该了解了如何使用PHP实现Base64格式的图片存储,或者说是上传到云端存储平台的功能。无论是在阿里云,还是七牛云存储上,实现都比较的简单化。

后端开发标签