Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Customising the CMS

Upload Field issue


4 Posts   574 Views


21 November 2012 at 9:51pm (Last edited: 22 November 2012 2:20am), Community Member, 15 Posts

I am using SilverStripe 3.0

I am using UploadField to enable file upload from Silverstripe admin

I have written the following code in my custom Page Type:

//has_one array
static $has_one = array(
"MyIcon1" => "File"       

//in getCMSFields
$fields->addFieldToTab("Root.Images", new UploadField('MyIcon1'));

My problem is that on a direct first page load, the upload does not work i.e. if you refresh the page or if you go to this page by typing its url, the file browser window is shown and after you select the file it only closes the file browser does not upload anything.....This happens in mozilla firefox only..

if u go to some other page and come back that is after ajax page loads it starts working....

Any help will be appreciated...Thanks in advance...


23 November 2012 at 11:44pm Community Member, 15 Posts

I was trying to follow the flow of UploadField.js and by adding alert is making the upload work properly on the first load also:

line no 59 approx. in framework/javascript/UploadField.js

$.entwine('ss', function($) {


Config: null,

onmatch: function() {

Can someone please explain the there any particular event which is fired when i am alerting there something that i can do on similar lines to make the upload work without alerting???


2 January 2014 at 8:52am Forum Moderator, 1091 Posts

I'm having this same issue now in 3.1.2 in FireFox 26 on Mac on first load.

After reloading the CMS, the FileUpload doesn't work. No javascript call is made, no error. Switching to another menu item and then coming back, or first saving (=updating) the record makes it work. Adding your alert to UploadField.js also does the trick on first load.

The issue seems to be with this line UploadField.js ~#165:

var fileInput = this.find('.ss-uploadfield-fromcomputer-fileinput');

Placing the alert directly before this line makes it work, directly after this line no longer. Could it be some sort of timing issue, where ss-uploadfield-fromcomputer-fileinput cannot be found because it doesn't exist yet? This is in a scaffolded UploadField on a LeftAndMain extension.

Have you (or anyone) ever found out how to avoid this?



3 January 2014 at 4:47am (Last edited: 3 January 2014 4:57am), Forum Moderator, 1091 Posts

I seem to have 'fixed' the problem by wrapping the javascript in document.ready:


(function($) {
   $( document ).ready(function() { // <-- ADDED
   }); // <-- ADDED

Can you confirm this?