首页 » 网站建设 » awss3php上传技巧_php运用AWS操作MinIO Server实现文件的上传分片上传下载

awss3php上传技巧_php运用AWS操作MinIO Server实现文件的上传分片上传下载

访客 2024-11-12 0

扫一扫用手机浏览

文章目录 [+]

详细中文文档地址 MinIO Quickstart Guide| Minio中文文档

1、安装minIO Server

awss3php上传技巧_php运用AWS操作MinIO Server实现文件的上传分片上传下载

这里minIO的做事我们采取docker的办法进行安装

awss3php上传技巧_php运用AWS操作MinIO Server实现文件的上传分片上传下载
(图片来自网络侵删)

docker run -p 9000:9000 -p 9001:9001 --name minio1 -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=admin123456" -v /Users/robing/data:/data minio/minio server /data --console-address ":9001"

把稳 /Users/robing/data 是我自己电脑的目录,大家可以根据自己的环境设定,也可以不指定

运行之后可以访问 http://127.0.0.1:9001 进行登录 用刚刚设定的密码 admin / admin123456

登录界面

创建授权用户

就可以拿到

Access Key: ZO0AHGDD9RS0IZPYJ05ASecret Key: HYaryObjstEeIRrVVIDUqrwZ5V72tTJ+WwFpKpd4

创建buck

2、PHP项眼前载 aws/aws-sdk-php包

composer require aws/aws-sdk-php

3、上传

1)普通上传

$client = new S3Client([ 'version' => 'latest', // 用于锁定API版本 'region' => '', // 'use_path_style_endpoint' => true, 'signature_version' => 'v4', // 署名版本(minio目前利用v4版本) 'endpoint' => 'http://127.0.0.1:9000', 'credentials' => ['key' => 'ZO0AHGDD9RS0IZPYJ05A', 'secret' => 'HYaryObjstEeIRrVVIDUqrwZ5V72tTJ+WwFpKpd4']]);}$storeKey = '2021/08/29/test.zip'; // 可以自行设定$fileData = '123123'; // 文件上传内容$params = ['Bucket' => 'robing', 'Key' => $storeKey, 'Body' => $fileData];$res = $client->putObject();

2) 分片上传

$uploadResult = $client->createMultipartUpload(['Bucket' => ’robing', 'Key' => $storeKey]);$UploadId = $uploadResult['UploadId']; // 分片上传须要指定对应的上传ID$params = [ 'Bucket' => 'robing', 'Key' => $storeKey, 'Body' => $fileData, // 分片内容 'PartNumber' => 1, // 当前上传分片数 'UploadId' => $metaData['UploadId'],];$res = $client->uploadPart($params);$ETag = $res['ETag']; // 这个分片tag须要进行存储,合身分片的时候须要所有的ETag// 比如我这里用redis 进行存储$redis[文件唯一标识]['ETagList'][] = ['PartNumber' => 详细分片数(1,2,3,4) , 'ETag' => $ETag];// 当末了一个分片的时候须要进行合身分片// 末了一个分片 进行分片合成$res = $client->completeMultipartUpload([ 'Bucket' => 'robing', 'Key' => $storeKey, 'MultipartUpload' => [ 'Parts' => $redis[文件唯一标识]['ETagList'] ], 'UploadId' => $redis[文件唯一标识]['UploadId'],]);

4、下载文件

$command = $client->getCommand('GetObject', [ 'Bucket' => 'robing', 'Key' => $storeKey // 上面我们上传实用的 $storeKey]);$request = $this->getClient()->createPresignedRequest($command, sprintf("+%d seconds", 600));$url = (string)$request->getUri();

以上为大略的实现,详细的详细参数可以查看文档

这里备注一个特殊把稳的问题,便是minio最小分片数为5M,在上传分片的时候如果不敷5M会有问题,以是在切割分片的时候,要担保每个分片都是5M以上 ,5M以下的不须要分片,可直接进行上传。

有问题可以下方留言评论辩论!

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读3 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读4 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0