当前位置:   article > 正文

文件上传App,H5,小程序多端兼容

文件上传App,H5,小程序多端兼容

插件地址:https://ext.dcloud.net.cn/plugin?id=5459

下载lsj-upload插件

代码如下

结构

  1. <lsj-upload :option="option" :size="size" :formats="formats" :debug="debug"
  2. :instantly="instantly" @change="onChange" @progress="onprogress"
  3. @uploadEnd="onuploadEnd">
  4. <button class="btn">上传合同</button>
  5. </lsj-upload>

js

  1. data(){
  2. return {
  3. // 上传接口参数
  4. option: {
  5. // 上传服务器地址,需要替换为你的接口地址
  6. // 该地址非真实路径,需替换为你项目自己的接口地址
  7. url: publicFun.wwwRequestUrl + "/gwiip-resource/XXX/put-file",
  8. // 上传附件的key
  9. name: 'file',
  10. // 根据你接口需求自定义请求头,默认不要写content-type,让浏览器自适配
  11. header: {
  12. // token
  13. "Blade-Auth": publicFun.publictoken()
  14. },
  15. // 根据你接口需求自定义body参数
  16. formData: {
  17. // 'orderId': 1000
  18. }
  19. },
  20. // 文件上传大小限制
  21. size: 50,
  22. // 限制允许上传的格式,空串=不限制,默认为空
  23. formats: '',
  24. // 是否打印日志
  25. debug: true,
  26. // 选择文件后是否立即自动上传,true=选择后立即上传
  27. instantly: true,
  28. }
  29. },
  30. methods:{
  31. // 文件选择回调
  32. onChange(files) {
  33. // 更新选择的文件
  34. this.files = files;
  35. // 强制更新视图
  36. this.$forceUpdate();
  37. // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
  38. // #ifdef MP-WEIXIN
  39. this.wxFiles = [...this.files.values()];
  40. // #endif
  41. },
  42. // 上传进度回调
  43. onprogress(item) {
  44. // 更新当前状态变化的文件
  45. this.files.set(item.name, item);
  46. // console.log('打印对象', JSON.stringify(this.files.get(item.name)));
  47. // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
  48. // #ifdef MP-WEIXIN
  49. this.wxFiles = [...this.files.values()];
  50. // #endif
  51. // 强制更新视图
  52. this.$forceUpdate();
  53. },
  54. // 某文件上传结束回调(成功失败都回调)
  55. onuploadEnd(item) {
  56. // console.log(`${item.name}已上传结束,上传状态=${item.type}`);
  57. // 更新当前窗口状态变化的文件
  58. this.files.set(item.name, item);
  59. // 构建接口数据
  60. let aaa = JSON.parse(item.responseText)
  61. this.contractParams.contractFileUrl = aaa.data.link
  62. uploadContract(this.contractParams).then(res => {
  63. console.log(res);
  64. if (res.data.code == "200") {
  65. uni.showToast({
  66. icon: 'none',
  67. title: res.data.msg
  68. })
  69. } else {
  70. uni.showToast({
  71. icon: 'none',
  72. title: res.data.msg
  73. })
  74. }
  75. })
  76. // 微信小程序Map对象for循环不显示,所以转成普通数组,
  77. // 如果你用不惯Map对象,也可以像这样转普通数组,组件使用Map主要是避免反复文件去重操作
  78. // #ifdef MP-WEIXIN
  79. this.wxFiles = [...this.files.values()];
  80. // #endif
  81. // 强制更新视图
  82. this.$forceUpdate();
  83. },
  84. }

效果如下:

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

闽ICP备14008679号