当使用FileReader API从输入元素读取文件时,它能够正常工作。但是我的安卓设备允许发送文件,即使是heic格式的文件,而这会导致控制台中没有任何错误信息的空白图像。当直接从相机获取图像时,方向也不正确。我刚刚发现实现这些功能需要使用庞大的库,因此我正在寻找更为智能的解决方案。
function previewFile( e ) {
var preview = document.getElementById('usersProfilePicture');
var file = e.files[0];
var reader = new FileReader();
reader.onloadend = function () {
preview.src = reader.result;
}
if (file) {
reader.readAsDataURL(file);
} else {
preview.src = "";
}
}
HTML5
<form>
<label>
<input id="uploadProfilePicture" name=file type=file accept="image/jpg, image/jpeg, image/png, image/gif, image/bmp">
</label>
</form>
没有任何错误信息。无论我设置什么接受属性,桌面和安卓上的Firefox、Chrome都允许.heic文件。
最糟糕的解决方案:拒绝接受.heic文件。 最好的解决方案:使fileReader能够处理.heic文件。 介于两者之间的解决方案:客户端检测heic并将其转换为jpeg。