关于这个问题Upload File Directly to S3 with Progress Bar,我想知道是否有更新或其他方式在不使用flash或java applet的情况下执行此操作?
我已经尝试过使用这个swfupload_s3 http://swfupload.org/forum/generaldiscussion/2185,它可以正常工作,但不幸的是进度条会达到100%而且发现了这个,
(1)本地代理服务器和一些反病毒软件会导致这种情况 行为。而不是将上传发送到服务器的反病毒 软件拦截上传并接受整个文件。 SWFUpload的 已发送整个文件并显示100%。这很快发生 因为还没有发出任何东西,所有这一切都发生在当地。该 反病毒然后扫描截获的文件并将其发送到 服务器。与此同时,SWFupload紧随其后。一旦 反病毒已经发送了服务器响应的文件和SWFUpload “完成”
(2)已知问题。我们已经记录了这一点。没有工作。这就是它只适用于任何客户端上传的方式 反病毒干扰上传时的工具
http://swfupload.org/forum/generaldiscussion/642(1)
http://code.google.com/p/swfupload/issues/detail?id=213(2)
我已经在这2天了,但我似乎找不到另一种方式。或者根本没有?
答案 0 :(得分:0)
有一个带有用于文件上传的S3 API的开源PHP脚本,它确实实时返回上传的进度,如果您愿意,也可以自定义上传器UI:
答案 1 :(得分:0)
我设法使用AWS的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) {
printf(
"%s of %s downloaded, %s of %s uploaded.\n",
$downloadSizeSoFar,
$downloadTotalSize,
$uploadSizeSoFar,
$uploadTotalSize
);
}
]
]);
AWS文档中解释了这一点 - S3 Config section。它的工作原理是暴露GuzzleHttp的progress
属性可调用,如this SO answer中所述。