华为 mate8 拍照上传图片失败
问题描述
在上传图片时,华为 mate8 掉起相册可以正常上传,但是掉起相机拍照片时,上传失败(仅限于原生浏览器)。场景:咨询流程上传图片,上传检查检验
解决方案
通过 debugger ,发现,mate8 在原生浏览器拍照上传时,有一个小坑,拍完照获取的照片名字有两个 ‘.’ ,所以截取到的名字后台识别不了,错误名字实例为:xxxxx.xxxxx.jpg;前端解决方案如下:
// file 为文件对象
let _fileName = "",
_rex = /\./g,
_rex2 = /\&/g;
let _fileLocalName = "";
if (files.name.match(_rex).length == 1) {
_fileName = files.name.split(".")[1];
_fileLocalName = files.name;
} else {
_fileName = files.name.split(".")[2];
_fileLocalName =
files.name.split(".")[0] +
files.name.split(".")[1] +
"." +
files.name.split(".")[2];
}
if (_fileLocalName.indexOf("&") > 0) {
_fileLocalName = _fileLocalName.replace(_rex2, "");
}
//上传请求
api.ajax({
url: XHRList.imgCreate,
method: "POST",
data: {
fileContent: base64
.split(",")[1]
.replace(/\+/g, "%2B")
.replace(/\n/g, ""),
fileName: _fileLocalName,
extName: _fileName,
},
timeout: 300000,
done(res) {
},
fail(res) {
}
});