繁体   English   中英

使用php直接上传到带有进度条的s3

[英]Direct upload to s3 with progress bar using php

关于这个问题使用进度条直接上传文件到S3 ,我想知道是否有更新或其他方式来执行此操作而不使用Flash或Java小程序?

我已经尝试过使用这个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天了,但我似乎找不到另一种方式。 或者根本没有?

我设法让这个工作在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部分对此进行了解释。 它的工作原理是暴露GuzzleHttp的progress属性 - 可调用,如本SO答案所述

有一个带有用于文件上传的S3 API的开源PHP脚本,它确实实时返回上传的进度,如果您愿意,还可以自定义上传器UI:

http://www.plupload.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM