views:

143

answers:

2

I've built a form to upload images, and processed with 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" />');


      }

     })



    });

The form itself sends the data to the server, but when I try to output print_r($_FILES['upload_file']); nothing appears, not even an empty array.

If I output print_r($_POST), the parameters are sent properly, but only the file name of the image.

So it seems the files themselves are not being sent along. How do I handle this? Thanks Rich

+6  A: 

I don't believe you can send files via ajax for security reasons. You'll have to post the form to an iframe and handle it from there.

Mike B
Why the downvote?
Mike B
Beats me. +1 to offset
John Conde
@Mike Reasons for down vote: Because you beat someone else to the answer, because you didn't provide a complete working solution, or finally just because someone out there can down vote you for whatever reason.
David
Thanks guys, makes sense on the reasons stated here.
Richard Testani
+3  A: 

You cannot use XHR to upload files.
You need either to use an IFRAME or flash/Java and such plugins of the browser.

Itay Moav