gpt4 book ai didi

php - AWS S3 PHP 进度条(服务器到云)

转载 作者:搜寻专家 更新时间:2023-10-31 21:08:43 25 4
gpt4 key购买 nike

我的应用程序中有一个用 PHP 编写的图像上传系统。文件浏览器打开,用户选择一张图片,我将它上传到我的服务器,我裁剪,我调整大小,我给它应用水印。底线是图像在我的服务器中。在某个时候,用户单击一个按钮,然后我将这些文件移动到我的 S3 存储桶中。当然,我需要一个进度条,因为客户端需要一个进度条。

现在上传文件非常简单:

    $result = $this->awsS3Client->putObject(array(
'Bucket' => 'bad-dum-tss-bucket',
'Key' => $destinationFilePath,
'SourceFile' => $sourceFilePath,
'ContentType' => $mimeType,
'ACL' => 'public-read',
));

我什至可以分多个部分

    $uploader = UploadBuilder::newInstance()
->setClient($this->awsS3Client)
->setSource($sourceFilePath)
->setBucket( 'bad-dum-tss-bucket')
->setKey($destinationFilePath)
->build();

try {
$uploader->upload();
} catch (MultipartUploadException $e) {
$uploader->abort();
}

没问题,直到我意识到我的客户需要一个该死的进度条。现在我搜索了很多,我能看到的都是上传者的链接,例如 http://fineuploader.com/假设上传将直接从浏览器发生(即不是从我的服务器)。那么 PHP-progress bar-S3,有人吗?

最佳答案

如果您仍然感兴趣,我找到了一种使用 AWS SDK v3 跟踪 PHP 进度的方法。

$client = new S3Client(/* config */);

$result = $client->putObject([
'Bucket' => 'bucket-name',
'Key' => 'bucket-name/file.ext',
'SourceFile' => 'local-file.ext',
'ContentType' => 'application/pdf',
'@http' => [
'progress' => function ($downloadTotalSize, $downloadSizeSoFar, $uploadTotalSize, $uploadSizeSoFar) {
printf(
"%s of %s downloaded, %s of %s uploaded.\n",
$downloadSizeSoFar,
$downloadTotalSize,
$uploadSizeSoFar,
$uploadTotalSize
);
}
]
]);

这在 AWS 文档中有解释 - S3 Config section .它通过公开 GuzzleHttp 的 progress 可调用属性来工作,如 this SO answer 中所述。 .

关于php - AWS S3 PHP 进度条(服务器到云),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27057785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com