2009-10-15 5 views
5

Ho un'applicazione web PHP che consente agli utenti di caricare immagini sul mio sito web. Lo faccio utilizzando semplicemente un codice HTML <form enctype="multipart/form-data">Sviluppo Web: come posso consentire a un utente di caricare file direttamente sul mio CDN (Cachefly)?

Tuttavia, invece di caricare tali immagini sul mio server web, vorrei che tali immagini vengano caricate direttamente sul mio CDN (Cachefly - che è un altro server).

È possibile ... disporre di un'applicazione Web consente a un utente di caricare immagini direttamente su un altro server?

In caso aiuta, ecco il mio codice PHP:

$target_path = "/home/www/example.com/uploads/"; 
$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    // file has been uploaded **LOCALLY** 
    // HOWEVER, instead of it being upload locally, I would like the file 
    // to be directly uploaded to the CDN ('other' server) 
    ... 
} else{ 
    // error: file did not get uploaded correctly 
    .... 
} 

risposta

0

Certo.

Da qualche parte nel codice è presente una variabile "$ target_directory" che deve essere impostata. Non si chiamerà così, ma a partire da come viene impostata la tua funzione deve essere lì, da qualche parte. Basta usare un percorso assoluto per la directory in cui si desidera che i file atterrino. Inoltre, assicurarsi che la directory sia CHMOD a 777 in modo che possa essere scritta.

Invia il tuo codice e posso aiutarti di più.

+0

Ho incluso il mio codice nel post originale – Tim

1

Non penso sia possibile caricare direttamente su un altro server, ma potrei sbagliarmi. Ho avuto un problema simile e ho usato le funzionalità FTP di PHP (http://us3.php.net/manual/en/book.ftp.php). Ho ancora usato il mio server come un intermediario, il che significa che ho caricato i file sul mio server, quindi l'ho trasferito sul server di destinazione, quindi ho cancellato il file dal mio server.

1

È possibile riceverlo sul server Web e quindi trasferirlo sul CDN tramite condivisione file o FTP.

Se la CDN è rivolta verso il Web, è possibile reindirizzare la richiesta a quel server e inviare il controllo al modulo Webserver una volta caricato il file. Probabilmente è meglio fare il trasferimento dei file nel back-end e tenere l'utente connesso al server web.

+0

Questo è il punto della mia domanda ...invece di caricarlo su di me e poi lo inoltro al mio CDN via FTP ... posso semplicemente caricare il FORM HTML, caricarlo direttamente sul CDN? – Tim

5

Penso che in caso di un CDN ... dovremo prima ricevere file sul nostro server e poi usare il caricamento dell'API CDN nel loro "bucket". Non penso che tu possa caricare direttamente su un CDN a meno che non ci sia un modo per mapparlo come una directory sul tuo server.

+0

Il mio CDN mi dà accesso FTP alla mia condivisione di file sui loro server. Questo fa qualche differenza? – Tim

+0

Non proprio ... il processo sarebbe: 1: carica il file sul tuo server. 2: quindi scrivere uno script PHP per inviare in batch o singoli file al CDN via FTP in background. –

+0

Quindi, la risposta breve è "No" - Non posso avere un punto di caricamento FORM HTML su un altro server direttamente per il caricamento del file. È corretto? – Tim

2
  • Spostamento/caricamento di un file su un servizio o per server non-diretta-accesable di solito è fatto utilizzando API del provider
  • Moving/caricamento di un file su un server 'posseduto' da soli si può fare utilizzando le estensioni PHP + FTP (per ulteriori informazioni: pear.php.net o pecl.php.ne t)
  • Spostamento/Caricamento di un file su un server "di proprietà" da solo ed essendo uno dei tanti in un cluster viene in genere eseguito caricando il file temporaneo su 1 server e in seguito un .sh, .bash o qualsiasi altra cosa viene chiamata che attiva ulteriori processi di trasferimento su un altro server.
+0

Cachefly, l'altro server, mi fornisce l'accesso FTP per caricare i file su di essi. Quindi, per essere sicuro di aver capito bene ... vorrei caricare prima il file sul mio server e poi su FTP su Cachefly. Quindi quello che stai dicendo è che non posso chiedere all'utente finale di utilizzare il modulo HTML per caricare direttamente su Cachefly – Tim

+0

La mia comprensione è corretta? – Tim

+0

Giusto, non sapevo nessuna soluzione che ti consentisse di uscire dal processo di upload-on-the-server. –

0

Si Servizi Amazon Web permette già di caricare di Amazon S3 direttamente dal browser dell'utente: Documentazione: http://doc.s3.amazonaws.com/proposals/post.html

Inoltre che S3 secchio può essere esposto tramite l'Amazon CDN (o qualsiasi altro CDN che possono puntare al server di origine del cliente)

+3

Questa è una proposta. Non "documentazione". Qualcuno sa, doe Amazon in realtà lo consente? – Cole

+0

Sarebbe bello saperlo. – xiankai