在';改变功能';在使用Extjs上传之前
我想在更改函数运行时获取文件大小。我试了很多,但都没用。 我该怎么做谢谢在';改变功能';在使用Extjs上传之前,extjs,file-upload,extjs4.1,Extjs,File Upload,Extjs4.1,我想在更改函数运行时获取文件大小。我试了很多,但都没用。 我该怎么做谢谢 { xtype: 'filefield', name: 'upfile[]', buttonConfig: { text: 'add' }, listeners: { 'change': function(f, value){ alert(f.si
{
xtype: 'filefield',
name: 'upfile[]',
buttonConfig: {
text: 'add'
},
listeners: {
'change': function(f, value){
alert(f.size); // not filesize
}
}
}
可以使用
ActiveX对象
function getSize()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
alert(size + " bytes");
}
请参考下面的链接
如果您想支持大多数浏览器版本,这是不可能的,因为JavaScript无法访问这些信息。最好的方法是自动启动上载,并在获得标头后立即中止。现在您有了文件大小。只需在requestHi@trungkien的回答中发回即可。您可以参考我尝试使用javascript(或)获取大小的链接,但在某些浏览器或旧版本浏览器上不起作用(例如:ie 9不起作用…)。也许Jquery在中做得更好,但Jquery我只是检查了一个小浏览器,不知道如何将它嵌入extjs:(@sra你能给我一个在上传之前使用服务器(php,…)检查的例子。我使用$.ajax({type:“HEAD”,url:f.getValue(),success:function(msg){alert(xhr.getResponseHeader('Content-Length')+'bytes');}});但不工作在某些浏览器中不工作。我只是在Chrome 27.0.1453.116 m版中测试-不工作,Firefox 21.0-不工作:(@trungkien嗯,那是因为ActiveX对象是Microsoft的东西,因此只存在于InternetExplorer中;)
listeners:{
change:function(inputFile, value){
console.log(inputFile.fileInputEl.dom.files[0].size)
}
}