<input type="file" accept="image/*"/>
我正在使用标签从移动设备上传照片的网页。这在 iphone 和 android 上的 chrome 上运行良好,但我们遇到问题的地方是库存的 android 浏览器。
当您从图库中选择一个文件时会出现问题(当您使用相机拍照时它工作正常)。我们进一步缩小范围,发现从股票浏览器的图库中获取数据 MIME 类型不可用(下面的照片显示正在加载的数据 URL 的前 100 个字符。目标是强制 JPEG , 但如果没有 MIME 类型,我们无法确定如何解决此问题。请参阅下面的代码了解图像的渲染方式。
没有类型如何渲染图像?更好的是,有人知道为什么该类型在股票 android 浏览器上不可用吗?
编辑
首先,这些不是同一张图片,它们是在同一时间拍摄的,这不是问题,这就是数据不同的原因(股票浏览器上的任何图像都没有出现 MIME 类型,所以这不是问题.
更新
我通过将 image/jpeg 插入到 chrome 上的股票浏览器来确认 MIME 类型是问题所在。不幸的是,我们无法保证它会是 jpeg,所以我们真的不能那样做
_readInputFile: function (file, index) {
var w = this, o = this.options;
try {
var fileReader = new FileReader();
fileReader.onerror = function (event) {
alert(w._translate("There was a problem opening the selected file. For mobile devices, some files created by third-party applications (those that did not ship with the device) may not be standard and cannot be used."))
$('#loadingDots').remove();
return false;
}
fileReader.onload = function (event) {
var data = event.target.result;
//alert(data.substring(0,100));
//var mimeType = data.split(":")[1].split(";")[0];
alert("Load Image"); //I get to this point
$('#' + w.disp.idPrefix + 'hiddenImages').append($('<img />', {
src: data,
id: "dummyImg" + index,
load: function(){
var width = dummy.width();
var height = dummy.height();
$('#dummyImg' + index).remove();
alert("Render"); // I don't get here
var resized = w._resizeAndRenderImage(data, null, null, biOSBugFixRequired, skewRatio, width, height);
alert("Image Rendered"); // I don't get here
}
}));
}
fileReader.readAsDataURL(file);
}
catch (e) {
}
}
铬合金
股票浏览器