Search code examples
phpjqueryjquery-file-upload

jQuery File Upload retrieving additional form data


I am struggling to understand how to retrieve additional form data when uploading files with Blueimp jQuery File Upload. I am tying to pass a value to be appended to the file name when it is uploaded...

I have an hidden input in my #fileupload form...

<input type="hidden" name="referrer" id="referrer" value="123">

I have added this to my main.js...

$('#fileupload').bind('fileuploadsubmit', function (e, data) {
    data.formData = $('form').serializeArray();
});

and this to index.php in the php folder...

$smeg = $_POST['referrer'];

What I now can't work out is how to use the variable $smeg in UploadHander.php

I ideally I would like to add the variable to the file name using the below as an example

protected function trim_file_name($file_path, $name, $size, $type, $error,$index, $content_range) {
   return $name. ' - '.$smeg;
}

but whenever I try and use $smeg I get the error $smeg is an undefined variable.

Am I passing the additional form data correctly and if so I do I retrieve it to use if?


Solution

  • In your function scope $smeg is not defined. So you either can use $_POST['referrer'] inside function:

    protected function trim_file_name($file_path, $name, $size, $type, $error,$index, $content_range) {
       return $name . ' - ' . $_POST['referrer'];
    }
    

    Or add another argument to function signature:

    protected function trim_file_name($file_path, $name, $smeg, $size, $type, $error,$index, $content_range) {
       return $name . ' - ' . $smeg;
    }
    

    Call to function will be something like:

    trim_file_name($path, $name, $_POST['referrer'], /* more arguments */);
    

    Second approach is preferrable because it eliminates dependency from $_POST array in your code.

    By the way, if you don't use all these arguments in your function - there's no need to define them in a signature and simplify function to something like:

    protected function trim_file_name($name, $smeg)
    {
        return $name . '-' . $smeg;
    }