thinkphp上传文件到阿里云oss

首先要下载阿里云oss的sdk
进入到项目根目录下,使用composer下载阿里云oss的sdk

composer require aliyuncs/oss-sdk-php

下载好后,就可以在thinkphp项目中使用了。

下面以上传图片为例,给大家演示一下thinkphp如何上传图片到阿里云oss上
前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>图片上传</title>
</head>
<body>
    <form action="/index.php/index/index/upload" enctype="multipart/form-data" method="post">
        <input type="file" name="image" /> <br>
        <input type="submit" value="上传" />
    </form>
</body>
</html>

后端代码:

<?php
namespace app\index\controller;
use think\Controller;
use OSS\OssClient;
use OSS\Core\OssException;

class Index extends Controller
{
    public function index()
    {
        return $this->fetch();
    }

    public function upload()
    {
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('image');
        $info = $file->getInfo();
       
        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
        $accessKeyId = "yourAccessKeyId";//这里填你自己的accessKeyId
        $accessKeySecret = "yourAccessKeySecret";//这里填你自己的accessKeySecret
        // Endpoint以深圳为例,其它地区请按实际情况填写。
        $endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
        // 设置存储空间名称。
        $bucket= "yourBucketName";//这里填你自己的bucket空间名称
        // 设置文件名称。
        $object = $info['name'];
        //由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
        $filePath = $file->getPathName();
       
        try{
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
       
            $ossClient->uploadFile($bucket, $object, $filePath);
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        return '上传成功';
       
       
     
    }
}
志博

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: