2010-04-12 12 views
5

J'ai créé un formulaire pour télécharger des images et les traiter avec 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" />'); 


     } 

    }) 



    }); 

Le formulaire lui-même envoie les données au serveur, mais lorsque je tente de sortie print_r($_FILES['upload_file']); rien ne semble, pas même un tableau vide.

Si je produis print_r($_POST), les paramètres sont envoyés correctement, mais seulement le nom de fichier de l'image.

Il semble donc que les fichiers eux-mêmes ne sont pas envoyés. Comment puis-je gérer cela? Merci Rich

+1

Pour mémoire, il est possible de télécharger via AJAX en utilisant l'objet ['FormData'] (https://developer.mozilla.org/en/XMLHttpRequest/FormData). La méthode est facile à utiliser et actuellement supportée par Chrome, Safari et Firefox. –

Répondre

6

Je ne crois pas que vous puissiez envoyer des fichiers via ajax pour des raisons de sécurité. Vous devrez poster le formulaire sur un iframe et le gérer à partir de là.

+0

Beats moi. +1 pour compenser –

+1

Raisons pour le vote à rebours: Parce que vous avez battu quelqu'un d'autre à la réponse, parce que vous n'avez pas fourni une solution de travail complète, ou simplement parce que quelqu'un peut voter pour vous pour une raison quelconque. – David

+0

Merci les gars, a un sens sur les raisons énoncées ici. –

3

Vous ne pouvez pas utiliser XHR pour télécharger des fichiers.
Vous devez soit utiliser un IFRAME ou flash/Java et de tels plugins du navigateur.