Houjie
2025-06-03 2fda34643bc22e25f6c569415da5f955c81536bf
uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue
@@ -16,7 +16,7 @@
      </upload-image>
      <upload-file v-if="fileMediatype !== 'image' || showType !== 'grid'" :readonly="readonly"
         :list-styles="listStyles" :files-list="filesList" :showType="showType" :delIcon="delIcon"
         @uploadFiles="uploadFiles" @choose="choose" @delFile="delFile">
         @uploadFiles="uploadFiles" @choose="choose" @delFile="delFile" @downloadFile="downloadFile">
         <slot><button type="primary" size="mini">选择文件</button></slot>
      </upload-file>
   </view>
@@ -87,7 +87,7 @@
      options: {
         virtualHost: true
      },
      emits: ['select', 'success', 'fail', 'progress', 'delete', 'update:modelValue', 'input'],
      emits: ['select', 'success', 'fail', 'progress', 'delete', 'update:modelValue', 'input', 'downloadFile'],
      props: {
         modelValue: {
            type: [Array, Object],
@@ -254,6 +254,57 @@
         }
      },
      methods: {
         downloadFile(item) {
            console.log('准备下载:', item);
            if (!item.url) {
               uni.showToast({
                  title: '文件不可下载',
                  icon: 'none'
               });
               return;
            }
            // #ifdef H5
            const a = document.createElement('a');
            a.href = item.url;
            a.download = item.name || 'file';
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
            // #endif
            // #ifndef H5
            uni.downloadFile({
               url: item.url,
               success: (res) => {
                  if (res.statusCode === 200) {
                     uni.openDocument({
                        filePath: res.tempFilePath,
                        success: () => {
                           console.log('打开文档成功');
                        },
                        fail: () => {
                           uni.showToast({
                              title: '无法打开此文档类型',
                              icon: 'none'
                           });
                        }
                     });
                  }
               },
               fail: () => {
                  uni.showToast({
                     title: '下载失败',
                     icon: 'none'
                  });
               }
            });
            // #endif
         },
         /**
          * 公开用户使用,清空文件
          * @param {Object} index