Skip to main content

How do you dynamically set the upload target path when using an AJAX based file uploader?



I'm trying to implement Valum's file uploader (improved by Ben Colon https://github.com/bencolon/file-uploader ) and I'm running into a problem. Previously, my upload.php had the upload target set in accordance to certain input fields. See here:







//Directory where files are stored

if ($grade == '9')

{

$target = "storage/g9/";

}

elseif ($grade == '10')

{

$target = "storage/g10/";

}

elseif ($grade == '11')

{

$target = "storage/g11/";

}

elseif ($grade == '12')

{

$target = "storage/g12/";

}





$target = $target . $_POST['snumber'] . "." . $extension;

move_uploaded_file($_FILES['upload']['tmp_name'], $target);







Now, with an AJAX based file uploader it starts uploading before you even hit submit so PHP doesn't get a chance to pickup the input fields to decide what the upload path is going to be, it can only go to a predefined one. To see how the AJAX file uploader does it, view their PHP on GitHub . How do I make it so the upload path changes depending on the user input fields?


Comments

  1. I believe PHP needs to know where to save the file as soon as you start uploading it. But, you can move the file once it's finished uploading, via PHP's rename() function.

    There's also move_uploaded_file() (although I've never used it myself).

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.