2018年4月14日
blog 来自一个后台管理需求的解决,在此做个总结和分享。
【1】业务场景
我们在手游中经常看到有游戏推送的各种广告或者活动(变着法子让玩家充值..),而这种广告投放是由后台来决定的,有时候简单的是:点击广告的图片,然后跳转到某一场景;也可以文件推送,玩家点击相关里面的内容链接,达到推广的目的;这些从技术层面看都是很好解决的,使用图片服务器(一般是阿里云或者腾讯云,华为云也在拼命的拓展市场),后台上传图片到服务器,将两者绑定到一起即可。
【2】基于需求,有解决方案,那就好办了。
2.1 文件上传页面
1)input控件添加文件
<div class="col-sm-2">
<input id="upLoadFile" type="file" class="form-control" οnchange="jsReadFiles(this.files)"/>
</div>
2)js上传文件数据流
//js 读取文件
function jsReadFiles(files) {
if (files.length) {
var file = files[0];
var upFileName = $("#upLoadFile").val();
var index1=upFileName.lastIndexOf(".");
var index2=upFileName.length;
var suffix=upFileName.substring(index1+1,index2);//后缀名
var reader = new FileReader();//new一个FileReader实例
fileType = suffix;
if (/text+/.test(file.type)) {//判断文件类型,是不是text类型
reader.readAsText(file,'gb2312');
reader.onload = function(e) {
roleList = e.target.result;
//var strFileName=file.replace(/^.+?\\([^\\]+?)(\.[^\.\\]*?)?$/gi,"$1"); //正则表达式获取文件名,不带后缀
basic.alert("添加成功,文件名字是: "+file.name+" !");
}
}else{
basic.alert("文件格式错误,请重新上传!");
$("#upLoadFile").val(null);
}
}
2.2 后台检测数据流
//正则表达式使用的中文字符
static String exp="^[\u4E00-\u9FA5|\\!|\\,|\\.|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]$";
/**
*@工具方法-中文字符和标点检测
* */
public static boolean isContainChinese(String str){
Pattern p = Pattern.compile(exp);
for (int i = 0; i < str.length(); i++) {// 遍历字符串每一个字符
char c = str.charAt(i);
Matcher matcher=p.matcher(c + "");
if(matcher.matches()) {
return true;
}
}
return false;
}
以上,可以检测到数据流的中文字符,包括标点符号。