uni-app uploadfile:多文件上传在app端为何报错?

uni-app uploadfile:多文件上传在app端为何报错?

示例代码:

files = files.map((item, index) => {  
    return {  
        name: "files",   
        url: item.url,   
        // #ifdef H5  
        file: item.file,  
        // #endif  
    }  
})  
try{  
  uni.uploadFile({  
      url,  
      files,  
      formData,  
      success: res => {  

      }  
   );  
}catch(e){  
  // TypeError: Cannot read property 'indexOf' of undefined.  
  console.log(e)  
}

更多关于uni-app uploadfile:多文件上传在app端为何报错?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

好吧,我自己查出来了。 官方文档是uri,我看成了url。我艹

更多关于uni-app uploadfile:多文件上传在app端为何报错?的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在App端使用uni.uploadFile进行多文件上传时,报错TypeError: Cannot read property 'indexOf' of undefined通常是由于文件参数格式问题导致的。

关键点在于App端与H5端的文件参数差异:

  1. App端不支持直接传递file对象,只能使用文件路径(url)
  2. 你的代码中使用了条件编译,但在App端仍然可能传入了不支持的参数

建议修改方案:

// 统一处理文件参数,仅保留App端支持的格式
files = files.map((item) => {  
    return {  
        name: "files",   
        url: item.url  // App端只需要url参数
    }  
})

// 确保formData不为undefined
const formData = formData || {}

uni.uploadFile({  
    url,  
    files,  
    formData,  
    success: (res) => {
        console.log('上传成功', res)
    },
    fail: (error) => {
        console.error('上传失败', error)
    }
})
回到顶部