index.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <view></view>
  3. </template>
  4. <script setup>
  5. const lemonjkFileSelect = uni.requireNativePlugin('lemonjk-FileSelect');
  6. //插件地址: https://ext.dcloud.net.cn/plugin?id=14059
  7. //事件
  8. const emit = defineEmits(['change'])
  9. //选择文件
  10. const selectFile = () => {
  11. // #ifdef APP-PLUS
  12. selectFileApi()
  13. // #endif
  14. }
  15. //手机端选择文件
  16. const selectFileApi = () => {
  17. lemonjkFileSelect.showPicker({
  18. mimeType: "*/*",
  19. utisType: "public.data",
  20. multi: 'yes'
  21. }, (res) => {
  22. const code = res.code.toString()
  23. if(code === '0') {
  24. // [{filePath,fileName,fileExtension,fileSize},...]
  25. emit('change', res.files ?? [])
  26. } else if(code === '1001'){
  27. // #ifdef APP-ANDROID
  28. // (仅安卓)当错误码为1001,即未授权文件读取权限,可以提示用户未打开读取文件权限,并跳转设置页
  29. uni.showModal({
  30. title: "需要文件访问权限",
  31. content: "您还未授权本应用读取文件。为保证您可以正常上传文件,请在权限设置页面打开文件访问权限(不同手机厂商表述可能略有差异)请根据自己手机品牌设置",
  32. confirmText: "去授权",
  33. cancelText: "取消",
  34. success(e) {
  35. if(e.confirm){
  36. // 跳转到应用设置页
  37. lemonjkFileSelect.gotoSetting();
  38. }
  39. }
  40. })
  41. // #endif
  42. // #ifdef APP-IOS
  43. uni.showModal({
  44. title: "需要文件访问权限",
  45. content: "您还未授权本应用读取文件。为保证您可以正常上传文件,请在设置页面打开文件访问权限",
  46. })
  47. // #endif
  48. } else if(code === '-1'){
  49. uni.showModal({
  50. title: "错误",
  51. content: "选择文件失败 -1"
  52. })
  53. } else if(code === '1002'){
  54. uni.showModal({
  55. title: "错误",
  56. content: "选择文件失败,文件不存在了"
  57. })
  58. } else if(code === '1005'){
  59. uni.showModal({
  60. title: "错误",
  61. content: "文件选取出错"
  62. })
  63. }
  64. })
  65. }
  66. //导处函数
  67. defineExpose({
  68. selectFile
  69. })
  70. </script>