Прямая загрузка на s3 с индикатором прогресса с использованием php - PullRequest
5 голосов
/ 17 февраля 2012

Относительно этого вопроса Загрузить файл напрямую на S3 с помощью индикатора выполнения , я хотел бы знать, есть ли обновление или другой способ сделать это без использования флэш-памяти или Java-апплета?

Я пытался использовать этот 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 дня, но не могу найти другого пути.Или нет вообще?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2017

Мне удалось заставить это работать в 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 .Он работает, выставляя свойство progress, вызываемое GuzzleHttp, как объяснено в этом SO-ответе .

0 голосов
/ 15 марта 2012

Существует php-скрипт с открытым исходным кодом и API-интерфейсом S3 для загрузки файлов, он возвращает результат загрузки в режиме реального времени, и вы также можете настроить пользовательский интерфейс Uploader, если хотите:

http://www.plupload.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...