跳至正文

PHP实现图片上传至阿里云OSS

先封装上传类,命名为 AliYunUpload ,代码如下:

USE OSS\OssClient;
USE OSS\Core\OssException;
 
include __DIR__.'/../vendor/autoload.php'; 
 
class AliYunUpload
{
 
    /**
     * 上传图片
     * @param $dst
     * @param $getFile
     * @return mixed
     */
    function uploadImage($dst, $getFile)
    {
      #配置OSS基本配置
      $config = array(
            'KeyId' => '你的KeyId',
            'KeySecret' => '你的KeySecret',
            'Endpoint' => '你的Endpoint',
            'Bucket' => '上传的Bucket',
      );
      $ossClient = new OssClient(
        $config['KeyId'], 
        $config['KeySecret'], 
        $config['Endpoint']);
      #执行阿里云上传
      $result = $ossClient->uploadFile(
        $config['Bucket'], 
        $dst, 
        $getFile);
      #返回
      return $result;
    }
}

封装完上传类,然后便可以写上传接口了,代码如下:

require '../inc/AliYunUpload.php';
 
#获取上传文件信息
$getFile = $_FILES['file']['tmp_name'];
#上传文件后缀
$ext = substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], '.')
 + 1);
#重命名文件上传名字
$dst = 'files/' . md5(time()) . '.' . $ext;
#执行阿里云上传
$aliyun = new AliYunUpload();
$url = $aliyun->uploadImage($dst, $getFile);
#根据显示返回信息
$json = json_encode(array(
    'code' => 200,
    'data' => $dst,
    'error' => ''
));
echo($json);

完成了接口封装后,再写一个简单的HTML,进行调用,代码如下:

<html>
<head>
<meta charset="utf-8">
<title>上传图片</title>
</head>
<body>
<div style="width: 100%; height: 100%;">
<form action="接口地址" method="post" enctype="multipart/form-data">
    <label for="file">文件名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
</form>
</div>
</body>
标签: