2012-02-17 9 views
5

Con respecto a esta pregunta Upload File Directly to S3 with Progress Bar, me gustaría saber si hay una actualización u otra forma de hacerlo sin usar un applet de flash o java.Subida directa a s3 con la barra de progreso usando php

He intentado usar esta swfupload_s3 http://swfupload.org/forum/generaldiscussion/2185, funciona, pero por desgracia, la barra de progreso dispara al 100% y encontrado esto,

(1) Servidores proxy local y algún software anti-virus hará que este comportamiento . En lugar de enviar la carga al servidor, el software anti-virus intercepta la carga y acepta el archivo completo. SWFUpload ha enviado el archivo completo y muestra el 100%. Esto sucede rápidamente porque todavía no se ha enviado nada, todo sucedió localmente. El antivirus escanea el archivo interceptado y lo envía al servidor . Mientras tanto, SWFupload está ajustado al 100%. Una vez que el antivirus ha enviado el archivo, el servidor responde y SWFUpload "completa"

(2) Problema conocido. Ya hemos documentado esto. No hay trabajo alrededor. Esta es la forma en que funcionará para cualquier lado del cliente única posibilidad de subir herramienta cuando antivirus interfiere con la carga

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

he estado en esto durante 2 días, pero parece que no puedo encontrar otra manera. O no hay nada?

Respuesta

0

Hay una fuente del script php abierto con una API S3 para la carga de archivos, que hace volver el progreso de la carga en tiempo real y se puede personalizar la subida por la interfaz de usuario, así si así lo desea:

http://www.plupload.com/

0

Logré que esto funcionara en el PHP SDK v3 de AWS.

$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 
      ); 
     } 
    ] 
]); 

Esto se explica en la documentación de AWS - S3 Config section. Funciona mediante la exposición de propiedad de GuzzleHttp progress, como se explica en this SO answer.

Cuestiones relacionadas