2009-10-15 10 views
5

Tengo una aplicación web PHP que permite a los usuarios subir imágenes a mi sitio web. Estoy haciendo esto simplemente usando HTML <form enctype="multipart/form-data">Desarrollo web: ¿cómo puedo permitir que un usuario cargue archivos directamente a mi CDN (Cachefly)?

Sin embargo, en lugar de tener esas imágenes cargadas en mi servidor web, me gustaría tener esas imágenes cargadas directamente en mi CDN (Cachefly - que es otro servidor).

¿Es esto posible ... tener una aplicación web que permita al usuario subir imágenes directamente a otro servidor?

En caso de que ayuda, aquí está mi código 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 
    .... 
} 

Respuesta

0

Claro.

En algún lugar de su código hay una variable "$ target_directory" que debe establecerse. No se llamará así, pero dependiendo de cómo esté configurada su función, necesita estar allí, en alguna parte. Simplemente use una ruta absoluta para el directorio donde desea que lleguen los archivos. Además, asegúrese de que el directorio esté CHMOD'd a 777 para que pueda escribirse.

Publique su código y puedo ayudarlo más.

+0

He incluido mi código en la publicación original – Tim

1

No creo que sea posible subirlo directamente a otro servidor, pero podría estar equivocado. Tuve un problema similar y utilicé las capacidades FTP de PHP (http://us3.php.net/manual/en/book.ftp.php). Todavía utilicé mi servidor como intermediario, lo que significa que cargué los archivos en mi servidor, luego FTP los transfirió al servidor de destino y luego eliminé el archivo de mi servidor.

1

Puede recibirlo en su servidor web y luego transferirlo al CDN a través de archivos compartidos o FTP.

Si el CDN está orientado hacia la web, puede redirigir la solicitud a ese servidor y devolver el control a su formulario de servidor web una vez que se cargue el archivo. Sin embargo, es mejor hacer la transferencia de archivos en el back-end y mantener al usuario conectado al servidor web.

+0

Ese es el punto de mi pregunta ...en lugar de tener que cargarlo y luego reenviarlo a mi CDN a través de FTP ... ¿puedo simplemente cargar el formulario HTML, subirlo directamente al CDN? – Tim

5

Creo que en el caso de un CDN ... primero tendrá que recibir archivos en su servidor y luego usar la API CDN cargada en su 'cubo'. No creo que puedas subir archivos directamente a un CDN a menos que haya una forma de asignarlo como un directorio en tu servidor.

+0

Mi CDN me da acceso FTP a mi intercambio de archivos en sus servidores. ¿Eso hace alguna diferencia? – Tim

+0

No realmente ... el proceso sería: 1: obtenga el archivo cargado en su servidor. 2: a continuación, escriba un script PHP tal vez para enviar archivos por lotes o individuales a la CDN a través de FTP en segundo plano. –

+0

Por lo tanto, la respuesta breve es "No": no puedo tener un punto de carga HTML FORM a otro servidor directamente para la carga del archivo. ¿Es eso correcto? – Tim

2
  • Movimiento/Carga de un archivo a un servicio o para que el servidor no directa-accesable se suele hacer mediante el uso de la API del proveedor de
  • Movimiento/Carga de un archivo a un servidor de 'propiedad' de sí mismo se puede hacer mediante el uso de extensiones PHP + FTP (para obtener más información: pear.php.net o pecl.php.ne t)
  • Mover/Cargar un archivo a un servidor 'propiedad suya' y ser uno de muchos en un clúster generalmente se realiza cargando el archivo temporal en 1 servidor y luego .sh, .bash o lo que sea que se llame, lo que activa procesos de transferencia adicionales a otro servidor.
+0

Cachefly, el "otro" servidor, me proporciona acceso FTP para cargar los archivos. Por lo tanto, para asegurarme de que entiendo correctamente ... aún así, cargaría el archivo a MI servidor primero y luego a FTP a Cachefly. Entonces, lo que estás diciendo es que no puedo permitir que el usuario final use el formulario HTML para cargarlo directamente en Cachefly – Tim

+0

¿Es correcto mi entendimiento? – Tim

+0

Correcto, no conozco ninguna solución que le permita salir del proceso de carga en su servidor. –

0

Sí Amazon Web Services ya permite subir a Amazon S3 directamente desde el navegador del usuario: Documentación: http://doc.s3.amazonaws.com/proposals/post.html

Además de que S3 cubo puede estar expuesta a través de la Amazonía CDN (o cualquier otra cdn que puede señalar al servidor de origen del cliente)

+3

Esa es una propuesta. No es 'documentación'. Alguien sabe, ¿Amazon realmente permite esto? – Cole

+0

Eso sería genial saberlo también. – xiankai

Cuestiones relacionadas