uni-app H5 调用uni.chooseFile时sourceType设置为album仍显示摄像头
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']
,仍然可能会显示摄像头选项。
可能的原因
- 平台差异:
uni.chooseFile
在不同平台上的行为可能会有所不同。特别是在 H5 平台上,浏览器的实现可能会影响sourceType
的效果。 - 浏览器限制:某些浏览器可能不支持仅从相册中选择文件,因此即使你指定了
sourceType
为['album']
,浏览器仍然会显示摄像头选项。 - uni-app 版本问题:如果你使用的是较旧版本的
uni-app
,可能存在一些已知的 bug 或限制,导致sourceType
参数不能完全按照预期工作。
解决方案
- 检查 uni-app 版本:确保你使用的是最新版本的
uni-app
,因为新版本通常会修复一些已知问题。 - 使用
accept
参数:你可以尝试使用accept
参数来限制选择的文件类型。例如,accept: 'image/*'
可以限制只选择图片文件。 - 手动处理摄像头选项:如果你发现无论如何都会显示摄像头选项,可以在用户选择文件后手动检查文件的来源。如果文件来自摄像头,可以提示用户重新选择。
示例代码
uni.chooseFile({
count: 1,
sourceType: ['album'],
accept: 'image/*',
success: (res) => {
const tempFilePaths = res.tempFilePaths;
console.log('选择的文件路径:', tempFilePaths);
// 在这里可以进一步处理文件
},
fail: (err) => {
console.error('选择文件失败:', err);
}
});