Foros del Web » Programando para Internet » PHP »

Webservice para recibir archivo

Estas en el tema de Webservice para recibir archivo en el foro de PHP en Foros del Web. Creo que el titulo dice bien lo que ando queriendo hacer, hacer un webservice para poder recibir un archivo. El webservice esta hecho en PHP... ...
  #1 (permalink)  
Antiguo 01/09/2008, 15:18
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
Webservice para recibir archivo

Creo que el titulo dice bien lo que ando queriendo hacer, hacer un webservice para poder recibir un archivo. El webservice esta hecho en PHP... y en teoria debe ser consumido por otro php u otra aplicacion, pero con eso de que soy bien novatote en el desarrollo de webservices.. pues ustedes comprenderan...

Ya entiendo como funcionan los webservices, e incluso hice mis pininos con éxito, uno que calcula el IVA y otro que analiza cadenas de caracteres... todo bien... el webservice recibe la cadena, la analiza y devuelve un array con la informacion de la misma o bien los errores en la cadena...

Lo que busco ahora es, hacer un webservice que permita la recepcion de archivos.

Espero alguien me pueda hechar un cable.

Saludos
__________________
De todas las cosas que queria ser... :-D acabe siendo un pato volador... :risa:
http://patovolador.wordpress.com
  #2 (permalink)  
Antiguo 01/09/2008, 15:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Webservice para recibir archivo

En las FAQs hay varios temas sobre subir archivos:
http://www.forosdelweb.com/f18/indice-faqs-php-108208/

Aqui uno:
http://www.forosdelweb.com/f18/faqs-...00/#post249389

Hay mas ejemplos, solo tienes que buscar en el indice.

Nota: Si planeas subir archivos un tanto pesados te recomiendo que veas la directiva:
upload_max_filesize = 2M
en tu php.ini
Normalmente esta en 2M. Pero si vas a subir archivos mas grandes que el limite, lo cambias.

Tambien si vas a subir archivos EXTREMADAMENTE grandes, te recomendaria usar Perl.
  #3 (permalink)  
Antiguo 01/09/2008, 19:44
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Webservice para recibir archivo

Mi estimado Ronruby!
Muchas gracias por atender el llamado de auxilio pato, solo debo decirte que el envio y recepcion de archivos lo mastico muy bien, y de hecho la aplicacion que tengo ya gestiona esa parte pero creo que no me explique como debia, por lo que les platicare bien con pelos y señales.

Tengo una aplicacion, el usuario entra a su cuenta y selecciona el vinculo "enviar archivo a pato"
alli tiene un campo de formulario y un boton enviar....
el usuario selecciona el archivo de su disco duro y despues en enviar... y listo...
esa parte ya esta hecha y en produccion, el asunto que me tiene de cabeza es que quiero convertir ese pequeño modulo en un webservice, para que otras personas desde su propio sistema tengan la opcio de "enviar archivo a pato"... el asunto es que tengo la duda de ¿como recibir archivos mediante webservice...?
Ya tengo la funcion que recibe como parametro el array $_FILES, pero cuando hago mi "consumidor" del ws no se como enviar ese $FILES a la funcion del webservice...
__________________
De todas las cosas que queria ser... :-D acabe siendo un pato volador... :risa:
http://patovolador.wordpress.com
  #4 (permalink)  
Antiguo 01/09/2008, 20:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Webservice para recibir archivo

Hola pato_volador,

No puedes recibir desde el array de $_FILES con un webservice, te tienen que enviar el archivo como una cadena, lo más común es que te la envíen codificada en base64 y así se puede transmitir con un XML normal.

Saludos.
  #5 (permalink)  
Antiguo 01/09/2008, 20:18
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Webservice para recibir archivo

La osa se pone interesante....
Entonces, supongamos que estoy haciendo mi consumidor... uso el boton de examinar, para localizar el archivo que quiero enviar y antes de enviarlo al webservice, debo de codificar el archivo en una cadena de base 64 (que seguramente sera una cadenota...) con la funcion de base64_encode.... y en mi webservice, debo de "reconstruir" en archivo con base64_decode??
__________________
De todas las cosas que queria ser... :-D acabe siendo un pato volador... :risa:
http://patovolador.wordpress.com
  #6 (permalink)  
Antiguo 01/09/2008, 20:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Webservice para recibir archivo

Así es, es la forma más común de pasar archivos por un WebService (ya que este va en una cadena XML).

Saludos.
  #7 (permalink)  
Antiguo 28/11/2008, 13:16
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Webservice para recibir archivo

Que onda!!!
Pues, ya quedó, a medias...
Para pasar el archivo hice caso de codificarlo a base 64 de la siguiente forma

Código PHP:
$archivo=(base64_encode(file_get_contents($_FILES['archivo']['tmp_name']))); 
Con esto estoy codificando el contenido del archivo para enviarlo al WebService y funciona "re bien"...

la duda que tengo ahora es, como "reconstruyo" el archivo para poder guardarlo en el disco duro del servidor?

Saludos de este pato WebServicero....
__________________
De todas las cosas que queria ser... :-D acabe siendo un pato volador... :risa:
http://patovolador.wordpress.com
  #8 (permalink)  
Antiguo 28/11/2008, 15:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Webservice para recibir archivo

Usas base64_decode, para obtener el contenido binario, luego usas fopen(), fwrite(), fclose() para escribirlo en el servidor.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:25.