2010-04-12 8 views
5

Creé un formulario para cargar imágenes y lo procesé con Prototype/PHP.

$('image_upload').observe('submit', function() { 

    var params = $H(); 
    params.set('name', $('image_title').value); 
    params.set('from', $('from_who').value); 
    params.set('upload_file', $('upload_file').value); 

    new Ajax.Request('/files/upload_process.php', { 
     method:'post', 
     parameters: params, 

     onSuccess: function(r) { 
     $('uploadbox').update('<img src="/images/interface/thankyou.png" />'); 


     } 

    }) 



    }); 

el propio formulario envía los datos al servidor, pero cuando trato de salida aparece print_r($_FILES['upload_file']); nada, ni siquiera una matriz vacía.

Si imprimo print_r($_POST), los parámetros se envían correctamente, pero solo el nombre de archivo de la imagen.

Parece que los archivos en sí no se envían. ¿Cómo manejo esto? Gracias Rich

+1

Para el registro, es posible cargar a través de AJAX utilizando el objeto ['FormData'] (https://developer.mozilla.org/en/XMLHttpRequest/FormData). El método es fácil de usar y actualmente es compatible con Chrome, Safari y Firefox. –

Respuesta

6

No creo que pueda enviar archivos a través de ajax por razones de seguridad. Deberá publicar el formulario en un iframe y manejarlo desde allí.

+0

Me gana. +1 para compensar –

+1

Razones para votar: porque venció a alguien más a la respuesta, porque no proporcionó una solución de trabajo completa, o finalmente solo porque alguien puede votar por cualquier razón. – David

+0

Gracias chicos, tiene sentido en las razones que se indican aquí. –

3

No puede usar XHR para cargar archivos.
Necesita utilizar un IFRAME o flash/Java y dichos complementos del navegador.

Cuestiones relacionadas