正常情况下 JS 的 <input type='file' /> 上传图片时,会打印如下格式:
name:文件名称;size:文件大小;type:文件类型;
但是在移动端使用时,部分机型微信传的照片或者在微信里使用微信拍照模式照相时,获取不到文件流的名称和类型,导致上传失败。
解决方案:
由于File对象里的属性都是只读的,如果发现没有文件类型,只能构造一个新的File对象,重命名和类型。
var file = new File( [ Blob ] , "新name" , { type: "新类型" });
// 第一个参数可以是Blob对象的数组, File对象继承Blob, 所以可以传File对象;
// 第二个参数为新文件名;
// 第三个参数是一个可选的, 设置type等属性。
整体代码:
执行效果: