今天做 文件上传处理的时候发现两个问题:
input.onchange ios web 代码不执行有异常,其他端都是好的;检查代码发现以:参数 event ios web 拿不到文件相关属性:可改用下面方式获得input.onchange 偶尔不执行,ios web 会有这种现象,android web pc web 都没问题input.onchange = async(event) => { //以前文件:event 中获取 发现在 ios web 通过打印发现中 event 没有参数,ios拿不到文件相关属性 //const file= event.path[0].files[0] //这种方式 在ios web 和 android web 都能使用 const file= input.files[0] })
//input.onchange 在 ios web 中会出现 偶尔无法执行的问题 //input.onchange = async(event) => { //} //这里需要替换成 这种方式 能兼容ios android web input.addEventListener('change', async(event) => { // 兼容 IOS 浏览器 const localFile = input.files[0] const tempSize = localFile.size }) input.click()
完整的代码:
async files() {
const input = document.createElement('input')
const isExit = document.getElementById('inputFile')
if (!isExit) {
input.type = 'file'
input.accept = toolManager.uploadType//'.doc,.docx,.xlsx,.xls,.pdf'
input.name = 'inputData'
input.id = 'inputFile'
input.style.display = 'none'
this.$refs.input1.$el.appendChild(input)//动态添加 dom 节点
// 兼容 IOS 浏览器
input.addEventListener('change', async(event) => {
if (input.files && input.files.length === 0) {
return
}
const localFile = input.files[0]
const tempSize = localFile.size
const size = tempSize / 1024 / 1024
if (size > 5) {
uni.showModal({
content: 'Please upload a file no more than 5M!',
confirmText: 'Confirm',
showCancel: false
})
return
}
// 拿到文件上传 alioss
const resoult = await aliOssHelper.aliOssUploadH5({
file: localFile,
size: localFile.size
})
if (resoult && resoult.code === 200) {
this.$emit('fileUploadInfo', resoult)
}
})
}
input.click()
},
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)