分片上传接口 融合接口 功能说明 分片上传步骤较多,包括初始化、文件切片、各个分片上传、完成上传。分片复制包括了初始化、源对象信息获取、各个分片复制、完成复制。为了简化分片上传和复制,PHP SDK 提供了对分片上传和分片复制的封装。AwsS3MultipartUploader 接口提供了简洁的分片上传方式,AwsS3MultiPartCopy 接口提供了简洁的分片复制方式。在使用这些封装接口的同时,您同样可以配置一些参数,控制分片的大小、并发数。 代码示例 使用 MultipartUploader 进行分片上传: php public function MultiPartUpload() { $filePath ' '; $bucket ' '; $objectName ' '; $uploader new AwsS3MultipartUploader($this>s3Client, $filePath, [ 'bucket' > $bucket, 'key' > $objectName, 'concurrency' > 5, // 设置上传分片 UploadPart 操作的最大并行数量,默认为5. 'partsize' > 5242880, // 设置分片大小,默认为5M. 'acl' > 'publicread', // 设置ACL,参考值private publicread 'beforeinitiate' > function(AwsCommand $command) { $command['ContentType'] 'text/json'; // 设置contenttype }, ]); try { $result $uploader>upload(); echo "Upload complete: {$result['ObjectURL']}" . "n"; } catch (AwsExceptionMultipartUploadException $e) { echo $e>getMessage() . "n"; } } 使用 MultiPartCopy 进行分片复制: php public function MultiPartCopy() { $srcbucket ' '; //从此桶复制 $srckey ' '; //复制的对象名 $dstbucket ' '; //目标桶 $dstkey ' '; //目标对象名 $source '/'.$srcbucket.'/'.$srckey; $uploader new AwsS3MultiPartCopy($this>s3Client, $source, [ 'bucket' > $dstbucket, 'key' > $dstkey, 'concurrency' > 5, // 设置上传分片 UploadPart 操作的最大并行数量,默认为5. 'partsize' > 5242880, // 设置分片大小,默认为5M. 'acl' > 'publicread', // 设置ACL,参考值private publicread 'beforeinitiate' > function(AwsCommand $command) { $command['ContentType'] 'text/json'; // 设置contenttype }, ]); try { $result $uploader>upload(); echo "Upload complete: {$result['ObjectURL']}" . "n"; } catch (AwsExceptionMultipartUploadException $e) { echo $e>getMessage() . "n"; } } 关于ContentType的配置 ContentType用于标识文件的资源类型,比如image/png, image/jpg 是图片类型,video/mpeg, video/mp4是视频类型,text/plain, text/html是文本类型, 浏览器针对不同的ContentType会有不同的操作,比如图片类型可以预览,视频类型可以播放,文本类型可以直接打开。application/octetstream类型会直接打开下载窗口。 有些用户反馈图片和视频无法预览的问题,主要就是ContentType没有正确设置导致的;ContentType参数需要用户主动设置,默认是application/octetstream。在php sdk中,可以根据对象key值后缀扩展名来决定文件的ContentType,可参考 mime.php 。
来自: