簡體   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