下面的方法可以解决选择不了的问题
// #ifdef APP-PLUS
// 使用 plus.io 打开文件选择器
let that = this;
// 使用立即执行函数表达式(IIFE)来封装文件选择逻辑
(function chooseAndProcessFile() {
plus.gallery.pick(function (path) {
// 成功选择了文件
console.log('选择文件路径:', path);
processSelectedFile(path);
}, function (e) {
// 选择文件失败
if (e.code !== 12) { // 用户取消选择时不提示错误
uni.showToast({
title: '文件选择失败,请重试',
icon: 'none'
});
}
}, {
filter: "none", // 允许选择所有类型的文件
multiple: false,
maximum: 1,
system: false,
preview: false,
permissionAlert: true, // 如果没有权限时显示提示
});
// 处理选择的文件
function processSelectedFile(filePath) {
plus.io.resolveLocalFileSystemURL(filePath, function (entry) {
entry.file(function (file) {
that.sendFileMessage({
name: file.name,
size: file.size,
type: file.name.split('.').pop().toLowerCase(),
url: filePath // 或者使用file.localURL取决于你的需求和实际测试效果
});
}, function (e) {
console.error('读取文件失败:', e.message);
uni.showToast({
title: '文件读取失败,请重试',
icon: 'none'
});
});
}, function (e) {
console.error('解析本地文件路径失败:', e.message);
uni.showToast({
title: '无法解析文件路径,请重试',
icon: 'none'
});
});
}
})(); // 立即执行
// #endif