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? :?:
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.
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. :(
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.
Re: Upload files via AJAX in FE