You can't do this in the way you are attempting. You're not actually
submitting the form, you're just passing a string. If you Google around,
you'll see that all of the AJAX file upload libraries use iFrames (such as
http://www.webtoolkit.info/ajax-file-upload.html). I'd try to follow that
approach. You might also check to see if there are any Prototype or
Scriptaculous plugins that will do this for you.
On 8/28/07, Aaron Roberson <[EMAIL PROTECTED]> wrote:
>
> I'm having a problem trying to use AJAX (with the Prototype framework)
> with
> the cffile tag to upload files to the server. The problem seems to be
> related to the fact that the enctype attribute of the upload form must be
> specified with the value of multipart/form-data. That specification
> requires
> that the form be posted (as opposed to "get"). Also, the cffile tag
> attribute filefield accepts the value entered into the file form field but
> when I use AJAX to pass the value to the action page with the cffile tag
> it
> does not work.
>
> Here is my form:
>
> <form action="action.cfm" method="post" name="upload_form"
> enctype="multipart/form-data" id="upload_form">
> <input type="file" name="filepath" id="filepath" /><br />
> <input type="submit" name="upload" id="upload" value="Submit" />
> </form>
>
> That is simple. Here is my AJAX (also very simple):
>
> Event.observe(window, 'load', init, false);
> function init() {
> Event.observe('upload_form', 'submit', uploadNow);
> }
> function uploadNow(e){
> $("upload").disabled=false;
> $("statusmsg").innerHTML = '<img src=\"images/ajax-loader.gif\"
> />';
> var pars = 'fpath=' + $F('filepath');
> var myAJAX = new Ajax.Request('action.cfm', {
> method:'post',
> onSuccess:function(){
> $('status').innerHTML = '<p>File Upload Complete</p>';
> },
> parameters: pars
> });
> };
>
> All that does is when the upload_form form button is clicked it runs the
> uploadNow() JavaScript function. The uploadNow() function does some
> display
> (a sexy ajax loader animated gif), then it assigns the form field
> "filepath"
> to a variable called "fpath" and then posts that variable to the action
> page.
>
> Here is the action page:
> <cffile accept="image/jpg" action="upload"
> destination="C:\wwwroot\steadfast\www\images\" result="ustatus"
> filefield="fpath" nameconflict="makeunique">
> <cfoutput>#ustatus.serverFileName#</cfoutput>
>
> The cffile tag looks for a filefield called "fpath". For some reason it is
> not getting that. I also tried changing the AJAX to pass the variables
> with
> a method of "get" instead of "post" and then added the following to the
> top
> of the action page:
>
> <cfset form.fpath = url.fpath>
>
> This does not work either. Does anyone have any ideas on how to get this
> to
> work?
>
>
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
ColdFusion 8 - Build next generation apps
today, with easy PDF and Ajax features - download now
http://download.macromedia.com/pub/labs/coldfusion/cf8_beta_whatsnew_052907.pdf
Archive:
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:287329
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe:
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4