2012-02-17 5 views
5

Riguardo a questa domanda Upload File Directly to S3 with Progress Bar, vorrei sapere se c'è un aggiornamento o un altro modo per farlo senza usare un'applet flash o java?Caricamento diretto su s3 con barra di avanzamento tramite php

Ho provato con questo swfupload_s3 http://swfupload.org/forum/generaldiscussion/2185, funziona, ma purtroppo la barra di avanzamento spara al 100% e ha trovato questo,

(1) I server proxy locale e alcuni software Anti-Virus causare questo comportamento . Invece di inviare il caricamento sul server, il software antivirus intercetta il caricamento e accetta l'intero file. SWFUpload ha inviato l'intero file e visualizza il 100%. Questo accade rapidamente perché non è stato ancora inviato nulla, è successo tutto locale. L'antivirus esegue la scansione del file intercettato e lo invia al server . Nel frattempo SWFupload è seduto al 100%. Dopo che l'antivirus ha inviato il file, il server risponde e SWFUpload "completa"

(2) Problema noto. Lo abbiamo già documentato. Non c'è lavoro intorno. Ecco come funziona per qualsiasi lato client solo caricando strumento quando anti-virus interferisce con il caricamento

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

Sono stato su questo per 2 giorni ma non riesco a trovare un altro modo. O non c'è affatto?

risposta

0

C'è uno script aperto source PHP con un API S3 per il caricamento dei file, lo fa tornare l'avanzamento del caricamento in tempo reale e si può personalizzare l'Uploader interfaccia utente così se lo desiderano:

http://www.plupload.com/

0

Sono riuscito a farlo funzionare su PHP SDK v3 di 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 
      ); 
     } 
    ] 
]); 

Questo è spiegato nei documenti AWS - S3 Config section. Funziona esponendo la proprietà progress di GuzzleHttp richiamabile, come spiegato in this SO answer.