uniapp编译APP后从系统选择相片、视频文件方法

下面的方法可以解决选择不了的问题

// #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


评论/留言