2012-02-17 70 views
5

关于这个问题Upload File Directly to S3 with Progress Bar,我想知道是否有更新或另一种方式来做到这一点,而不使用Flash或Java小程序?直接上传到s3与进度条使用php

我一直在使用这个swfupload_s3 http://swfupload.org/forum/generaldiscussion/2185尝试,它的工作原理,但不幸的是,进度条笋100%,发现了这一点,

(1)本地代理服务器和一些反病毒软件会导致此 行为。防病毒 软件拦截上载并接受整个文件,而不是将上载发送到服务器。 SWFUpload 已发送整个文件并显示100%。这种情况很快发生,因为还没有发送任何东西,这一切都发生在本地。然后, 反病毒扫描截获的文件并将其发送到 服务器。与此同时,SWFupload则保持在100%的水平。一旦 反病毒已发送文件服务器响应和SWFUpload “完成”

(2)已知问题。我们已经记录了这一点。没有工作。这是怎么会为任何客户端只上传 工具工作时,防病毒与上传

http://swfupload.org/forum/generaldiscussion/642(1)干扰
http://code.google.com/p/swfupload/issues/detail?id=213(2)

我已经在这个2几天,但我似乎无法找到另一种方式。或者根本没有?

回答

0

有与S3 API的文件上传一个开源的PHP脚本,它返回实时上传的进度,并可以自定义上传UI,以及如果你愿意的话:

http://www.plupload.com/

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中所解释的。