2012-02-17 123 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中所解釋的。