当前位置:   article > 正文

[uniapp小程序][文件和图片预览方法][读取文件/文件夹警告] 无法读取 文件或文件夹不在白名单中, 上传时会被忽略, 在真机上可能无法读取

文件或文件夹不在白名单中, 上传时会被忽略, 在真机上可能无法读取

文件图片预览方式:

利用微信自带的wx.downloadFile() + wx.openDocument()

 uni-app官网 | uni.uploadFile(OBJECT) 详解

https://uniapp.dcloud.net.cn/api/request/network-file.html#downloadfile

uni-app官网 | uni.uni.openDocument(OBJECT)详解

https://uniapp.dcloud.net.cn/api/file/file.html#opendocument

代码如下

读取文件/文件夹警告出现原因:

以上警告是由于微信小程序的安全策略导致的。微信小程序对于网络请求和文件读取都有一些限制,其中包括白名单机制。如果你的小程序中的文件不在白名单中,那么在真机上可能无法读取。

解决方案:

我们先使用uni.downloadFile把后台接口或者本地的PDF以及其他格式转为获取到本地临时路径。然后再使用uni.openDocument就可以了。
 

源码如下:

  1. <view class="" v-for="(item, index) in Lists" :key="index">
  2. <view class="flex">
  3. <view class="u-flex" @click="Preview(item)">{{ item.name }}</view>
  4. </view>
  5. </view>
  1. // 文件类型识别,用正则去识别不同文件类型,然后对应不同文件类型去做不同操作
  2. Preview(item) {
  3. console.log(item);
  4. // 定义图片类型的正则表达式
  5. const imageRegex = /(\.jpg|\.jpeg|\.png)$/i;
  6. // 定义文档类型的正则表达式
  7. const docRegex = /(\.doc|\.docx|\.pdf)$/i;
  8. // // 定义其他文件类型的正则表达式
  9. const othersRegex = /(\.txt|\.csv|\.xlsx)$/i;
  10. // 利用正则表达式判断文件类型
  11. if (imageRegex.test(item.name)) {
  12. console.log("图片类型");
  13. this.lookImage(item.url) //预览图片
  14. } else if (docRegex.test(item.name)) {
  15. console.log("文档类型");
  16. this.lookFile(item.url) //预览文件
  17. } else if (othersRegex.test(item.name)) {
  18. console.log("其他文件类型");
  19. } else {
  20. uni.showToast({
  21. title: `未知文件类型`,
  22. icon: 'none',
  23. duration: 2000
  24. })
  25. }
  26. },
  27. // 预览图片
  28. lookImage(url) {
  29. let imgArray = [];
  30. imgArray[0] = url
  31. uni.previewImage({
  32. current: 0,
  33. urls: imgArray
  34. })
  35. },
  36. //预览文件
  37. //此处的参数url为uni.uploadFile上传文件,返回的永久地址
  38. lookFile(url) {
  39. console.log('预览文件的url:',url)
  40. uni.downloadFile({
  41. url:url,
  42. success:function(res){
  43. if(res.statusCode === 200){
  44. console.log("临时路径",res.tempFilePath)
  45. let filePath = res.tempFilePath
  46. //调用uni.openDocument打开文件
  47. uni.openDocument({
  48. filePath: filePath,
  49. success: function (res) {
  50. console.log("打开文档成功");
  51. },
  52. fail: function (res) {
  53. console.log("uni.openDocument,fail");
  54. console.log(res)
  55. },
  56. complete: function (res) {
  57. console.log("uni.openDocument,complete");
  58. console.log(res)
  59. }
  60. });
  61. }
  62. },
  63. fail:function(err){
  64. console.log('文件下载失败',err)
  65. }
  66. })
  67. },


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/644258
推荐阅读