Thinkphp整合阿里云OSS图片上传实例代码

1. Thinkphp整合阿里云OSS图片上传实例代码

ThinkPHP是一款基于MVC模式的PHP开发框架,广泛应用于各种Web应用程序的开发。阿里云OSS(Object Storage Service)是一种海量、安全、低成本、高可靠的云存储服务。本文将介绍如何在ThinkPHP中整合阿里云OSS,实现图片上传的功能。

2. 阿里云OSS配置

首先,我们需要在阿里云控制台上创建一个OSS实例,并且获取到Access Key ID和Access Key Secret。然后,我们需要安装Aliyun SDK来方便地使用OSS的API。可以通过Composer来安装Aliyun SDK,执行以下命令:

composer require aliyuncs/oss-sdk-php

3. 文件上传表单

在前端页面上,我们需要创建一个文件上传表单,用于选择需要上传的图片文件。在该表单中,我们可以通过JavaScript来实现文件的预览功能。

<form action="/upload" method="post" enctype="multipart/form-data">

<input type="file" name="image" id="image">

<img id="preview" src="#" alt="your image" height="200">

<input type="submit" value="Upload">

</form>

<script>

document.getElementById("image").onchange = function(e) {

var reader = new FileReader();

reader.onload = function(e) {

document.getElementById("preview").src = e.target.result;

};

reader.readAsDataURL(this.files[0]);

};

</script>

以上代码实现了一个简单的文件上传表单,并且利用JavaScript实现了图片预览的功能。在用户选择图片文件后,该图片会在页面上进行预览。

4. ThinkPHP控制器代码

在ThinkPHP的控制器中,我们需要处理文件上传的逻辑,并将文件上传至阿里云OSS。

namespace app\index\controller;

use think\Controller;

use think\Request;

use OSS\OssClient;

class Upload extends Controller

{

public function index(Request $request)

{

$file = $request->file('image');

$bucket = 'your-bucket-name';

$endpoint = 'http://your-endpoint';

$accessKeyId = 'your-access-key-id';

$accessKeySecret = 'your-access-key-secret';

$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

$info = $file->rule('md5')->move(ROOT_PATH . 'public' . DS . 'uploads');

if ($info) {

$filename = $info->getSaveName();

$object = 'images/' . $filename;

$ossClient->uploadFile($bucket, $object, $info->getRealPath());

return 'Upload Successful';

} else {

return 'Upload Failed';

}

}

}

在以上代码中,我们首先获取到用户提交的文件,并进行阿里云OSS相关的配置。然后,我们使用OssClient来上传文件至OSS。将文件保存后,我们可以返回一个成功或失败的提示信息给用户。

5. 配置路由

最后,我们需要配置一个路由来指定上传功能的入口地址。

use think\Route;

Route::post('/upload', 'index/upload/index');

以上配置将POST请求的/upload路径映射到index控制器的upload方法上。

6. 测试上传功能

现在,我们就可以进行测试了。选择一张图片文件,点击上传按钮,文件将会被上传至阿里云OSS,并返回一个上传成功的提示信息。

总结

本文详细介绍了在ThinkPHP中整合阿里云OSS实现图片上传的功能。通过使用阿里云SDK,我们可以方便地在应用中上传文件至阿里云OSS。希望本文对您在使用ThinkPHP开发项目时有所帮助。

后端开发标签