uni-app H5 调用uni.chooseFile时sourceType设置为album仍显示摄像头

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app H5 调用uni.chooseFile时sourceType设置为album仍显示摄像头

开发环境 版本号 项目创建方式
Windows 11 HBuilderX

产品分类:uniapp/H5

浏览器平台:Chrome
浏览器版本:120.0.6099.71

示例代码:

uni.chooseFile({
count: 1,
compressed: true,
success: res => {
uni.showLoading({
title: '导入中...',
mask: true
});
uni.uploadFile({
url: this.$BASE_URL + 'api/uploads/upload',
file: res.tempFiles[0],
name: 'file',
success: (res) => {  
},
});
}
});

操作步骤:

uni.chooseFile({
count: 1,
compressed: true,
success: res => {
uni.showLoading({
title: '导入中...',
mask: true
});
uni.uploadFile({
url: this.$BASE_URL + 'api/uploads/upload',
file: res.tempFiles[0],
name: 'file',
success: (res) => {  
},
});
}
});

预期结果:

不显示摄像头

实际结果:

录像摄像头显示出来了


2 回复

这个api 在h5 浏览器上有兼容性问题,


uni-app 中,uni.chooseFile 是一个用于选择文件(包括图片、视频等)的 API。sourceType 参数用于指定选择的来源,通常包括 album(相册)和 camera(摄像头)。然而,在某些情况下,即使你将 sourceType 设置为 ['album'],仍然可能会显示摄像头选项。

可能的原因

  1. 平台差异uni.chooseFile 在不同平台上的行为可能会有所不同。特别是在 H5 平台上,浏览器的实现可能会影响 sourceType 的效果。
  2. 浏览器限制:某些浏览器可能不支持仅从相册中选择文件,因此即使你指定了 sourceType['album'],浏览器仍然会显示摄像头选项。
  3. uni-app 版本问题:如果你使用的是较旧版本的 uni-app,可能存在一些已知的 bug 或限制,导致 sourceType 参数不能完全按照预期工作。

解决方案

  1. 检查 uni-app 版本:确保你使用的是最新版本的 uni-app,因为新版本通常会修复一些已知问题。
  2. 使用 accept 参数:你可以尝试使用 accept 参数来限制选择的文件类型。例如,accept: 'image/*' 可以限制只选择图片文件。
  3. 手动处理摄像头选项:如果你发现无论如何都会显示摄像头选项,可以在用户选择文件后手动检查文件的来源。如果文件来自摄像头,可以提示用户重新选择。

示例代码

uni.chooseFile({
  count: 1,
  sourceType: ['album'],
  accept: 'image/*',
  success: (res) => {
    const tempFilePaths = res.tempFilePaths;
    console.log('选择的文件路径:', tempFilePaths);
    // 在这里可以进一步处理文件
  },
  fail: (err) => {
    console.error('选择文件失败:', err);
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!