when I use my input button to browse for the file on the user puter it works on FF, IE9 and Chrome. But when I am passing the files to the JS function in IE9 I get undefined, while it works perfectly in FF and Chrome.
<form id="uploadForm" style='display:none;padding:1px;' method="post" enctype="multipart/form-data">
<input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this.files)"/>
function handleFiles(files){
//doing something with the files
}
//In IE files is undefined
I have also tried to use
dojo.connect(dojo.byId("uploadForm").data, "onchange", function(evt){
handleFiles(this.files);
});
<form id="uploadForm" method="post" enctype="multipart/form-data">
<input type="file" name="data" id="inFile" size="15" style="display:none"/>
This.files es undefined again
thanks
when I use my input button to browse for the file on the user puter it works on FF, IE9 and Chrome. But when I am passing the files to the JS function in IE9 I get undefined, while it works perfectly in FF and Chrome.
<form id="uploadForm" style='display:none;padding:1px;' method="post" enctype="multipart/form-data">
<input type="file" name="data" id="inFile" size="15" style="display:none" onchange="handleFiles(this.files)"/>
function handleFiles(files){
//doing something with the files
}
//In IE files is undefined
I have also tried to use
dojo.connect(dojo.byId("uploadForm").data, "onchange", function(evt){
handleFiles(this.files);
});
<form id="uploadForm" method="post" enctype="multipart/form-data">
<input type="file" name="data" id="inFile" size="15" style="display:none"/>
This.files es undefined again
thanks
Share Improve this question edited Aug 19, 2012 at 18:18 setlio asked Aug 17, 2012 at 1:26 setliosetlio 7262 gold badges14 silver badges32 bronze badges 1- 1 I have tried this: stackoverflow./questions/3279997/… But it did not work! – setlio Commented Aug 17, 2012 at 1:55
2 Answers
Reset to default 6IE9 does not support multiple files upload and it does not have files
property. You will have to rely on value
property and parse a filename from the path it provides.
My solution:
Pass
this
instead ofthis.files
intohandleFiles()
function:<input type="file" onchange="handleFiles(this)">
Start your
handleFiles()
function like this:function handleFiles(input){ var files = input.files; if (!files) { // workaround for IE9 files = []; files.push({ name: input.value.substring(input.value.lastIndexOf("\\")+1), size: 0, // it's not possible to get file size w/o flash or so type: input.value.substring(input.value.lastIndexOf(".")+1) }); } // do whatever you need to with the `files` variable console.log(files); }
See working example at jsFiddle: http://jsfiddle/phusick/fkY4k/
Well obviously files is not defined in IE. See here for how to do it with IE.