项目中使用图片上传功能,一直以来都是使用cordova的file插件,之前也没有遇到什么问题,但是今天在测试过程中,测试人员反馈,所有拍照上传图片OK,但是截图就报错。于是在我自己的手机上测试后,发现并没有该问题,所以第一反应是不是手机差异,询问后发现测试用的是vivo X9(心中一万匹草泥马奔腾,又是vivo的。。。遇到N个问题都是OV的手机),借来后连上电脑,debug后发现,在文件上传时报错FILE_NOT_FOUND,这就很尴尬了,但是文件确实存在。再次进入断点后发现,原来是文件名出现了问题,在获取到文件后,文件名中文部分居然变成了乱码,所以这里需要对文件名进行下转换,将乱码部分还原成中文。
直接上代码:
var options = {
maximumImagesCount: 6,//设置最多只能选择6个照片,以免出现内存溢出
width: 800,
height: 700,
quality: 80
};
window.imagePicker.getPictures(
function(results) {
var filename = '';
for (var i = 0; i < results.length; i++) {
console.log('Image URI: ' + decodeURI(results[i]));
}
}, function (error) {
console.log('Error: ' + error);
}, {
maximumImagesCount: 10,
width: 800
}
);
核心部分在于调用decode方法来将乱码部分转换回中文.