[英]How to upload files directly to S3 using PHP and with progress bar
有一些类似的问题,但对于如何使用带有进度条的 PHP 将文件直接上传到 S3,没有一个很好的答案。 甚至可以在不使用 Flash 的情况下添加进度条吗?
注意:我指的是从客户端浏览器直接上传到 S3。
是的,可以在 PHP SDK v3 中执行此操作。
$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) {
// handle your progress bar percentage
printf(
"%s of %s downloaded, %s of %s uploaded.\n",
$downloadSizeSoFar,
$downloadTotalSize,
$uploadSizeSoFar,
$uploadTotalSize
);
}
]
]);
这在 AWS docs- S3 配置部分进行了解释。 它通过公开 GuzzleHttp 的progress
属性可调用来工作,如this SO answer中所述。
从技术上讲,使用 PHP 您不能从客户端获得 go --> S3。 你的解决方案,如果你想使用PHP要么必须设计如下:
AWS PHP SDK: http://aws.amazon.com/sdkforphp/写得很好,包含一个来自客户端文件的具体示例 --> S3 服务器
关于进度条,有很多选项可用。 快速搜索 stackoverflow.com 显示了一个与此问题相同的问题:
可以直接上传,但是进度条不行: http://undesign.org.za/2007/10/22/amazon-s3-php-class/
参见下载中的 example_form,直接从浏览器上传到 S3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.