Results 1 to 5 of 5

Thread: Upload files via AJAX in FE

  1. #1
    User
    Join Date
    07-26-09.
    Posts
    175

    Default Upload files via AJAX in FE

    How do you guys upload files via e.g. FancyUpload in FE?

    I have used this example in my module, but the files are not being uploaded. To debug I put this code into my module:
    [code=php:nuy6fyp6]<span class="syntaxdefault">
    </span><span class="syntaxcomment">//*Ajax*handler
    </span><span class="syntaxdefault">if*</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Input</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'isAjax'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">*</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">*</span><span class="syntaxstring">'1'</span><span class="syntaxkeyword">)
    {
    </span><span class="syntaxdefault">****print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">);
    </span><span class="syntaxdefault">****print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_FILES</span><span class="syntaxkeyword">);
    </span><span class="syntaxdefault">****exit</span><span class="syntaxkeyword">;
    }
    </span><span class="syntaxdefault">*</span>[/code:nuy6fyp6]
    As response I receive the $_SESSION array that does not contain ['FILES'] key, and $_FILES array that is completely empty.

    Furthermore, I noticed that when "fileComplete" event is fired, as response text I receive a Contao page yelling "Empty referer address!".

    What's wrong with it? :?:

  2. #2
    Experienced user
    Join Date
    06-20-09.
    Posts
    1,311

    Default Re: Upload files via AJAX in FE

    Tru read this, I encountered the same problem a while ago....
    http://www.contao.org/forum/message/57142.html
    It explains why theres no $_SESSION['FILES']
    The workaround I used is outlined at the bottom of the post. (nothing to do with Ajax though, just to get the uploaded filename which I needed for my module.

  3. #3
    User
    Join Date
    07-26-09.
    Posts
    175

    Default Re: Upload files via AJAX in FE

    Well you have used the built-in form generator.

    In this module, I don't even use the widgets that are in Contao. The form is not being validated, as it's put directly into template:
    Code:
    <form id="form_comment" action="" method="post">
            <textarea name="text" rows="10" cols="80"></textarea>
            Attach a file
            <input type="submit" value="Add this Comment" />
    </form>
    Looks like the $_FILES are unset before the page is rendered. I wish I could access them using foreach(), just as it is in DC_Folder.php line 692.

    I guess there is no workaround at the moment.

  4. #4
    User
    Join Date
    07-26-09.
    Posts
    175

    Default Re: Upload files via AJAX in FE

    Okay, what I've got so far:

    I have disabled the referer check and put this code into my module:
    [code=php:7x5ctj7x]<span class="syntaxdefault">
    if*</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">Input</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'isAjax'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">*</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">*</span><span class="syntaxstring">'1'</span><span class="syntaxkeyword">)
    {
    </span><span class="syntaxdefault">****foreach*</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_FILES*as*$file</span><span class="syntaxkeyword">)
    </span><span class="syntaxdefault">****</span><span class="syntaxkeyword">{
    </span><span class="syntaxdefault">********$_SESSION</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'FILES'</span><span class="syntaxkeyword">][]</span><span class="syntaxdefault">*</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">*$file</span><span class="syntaxkeyword">;
    </span><span class="syntaxdefault">****</span><span class="syntaxkeyword">}

    </span><span class="syntaxdefault">****print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_SESSION</span><span class="syntaxkeyword">);
    </span><span class="syntaxdefault">****exit</span><span class="syntaxkeyword">;
    }
    </span><span class="syntaxdefault">*</span>[/code:7x5ctj7x]

    When I upload a file, as the response I receive session array that contains info about files. Sounds awesome.

    However, when I hit the "Submit" button, the array returned is way diffrent. It does not have the FILES key.

  5. #5
    User
    Join Date
    07-26-09.
    Posts
    175

    Default Re: Upload files via AJAX in FE

    Solved.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •