BUG描述:
上传或者导入文件名为中文的文件时,只显示后缀,数字或字母的文件名则正常显示。
原因:
bootstrap支持国际化,默认fileinput.js中支持的是英文,所以支持数字和字母的文件名,中文名称则根据正则表达式,替换了。
解决方案:
方案一:
找到fileinput.js文件打开,搜索slugDefault关键字,找到下面这个方法
slugDefault: function (text) {
return isEmpty(text) ? '' : text.split(/(\\|\/)/g).pop().replace(/[^\w\-.\\\/ ]+/g, '');
},
替换成:
return isEmpty(text) ? '' : text.substr(text.lastIndexOf("\\") + 1, text.length);
结果:
slugDefault: function (text) {
/*return isEmpty(text) ? '' : text.split(/(\\|\/)/g).pop().replace(/[^\w\-.\\\/ ]+/g, '');*/
return isEmpty(text) ? '' : text.substr(text.lastIndexOf("\\") + 1, text.length);
},
亲测,可以解决。
注意:
虽然可以解决,这种操作,感觉很暴力,项目不需要国际化支持时候,可以这样操作。如果需要国际化时,不建议这样!
方案二:
引入国际化文件,然后删除
<input type="file" name="file" class="file"/>
中的class="file"样式,如下:
<input type="file" name="file"/>
由于项目引用的和网上搜的国际化文件不一样, 该情况未成功,这个根据情况而定,酌情使用。
该情况不适用。