当前位置:   article > 正文

uniapp 多文件上传

uniapp 多文件上传

实现uniapp单个,多个文件上传的功能。 支持上传excel,word,pdf,excel等文件 。我这个文件上传分了两步,一步是选择文件, 第二步时提交文件的同时也把文件路径上传到服务器了,你们根据自己的需求修改

一 获取文件路径

安卓选择文件获取上传路径 - DCloud 插件市场

我通过uniapp官网市场插件首先获取到上传的文件路径

如果文件下载不了,上面那个是压缩包

二 选择文件

代码部分

  1. <view @click="chooseFile">选择附件</view>
  2. //这个是市场插件的代码
  3. <ysh-file-manager ref="filemanager" @result="resultPath"></ysh-file-manager>
  4. // 提交文件
  5. <view @click="submitFile">提交文件</view>
  1. // 点击选择文件后执行下面这两个方法
  2. chooseFile() {
  3. this.$refs.filemanager._openFile();
  4. },
  5. resultPath(e) {
  6. // e.path 就是你选择文件的路径
  7. // 筛选你文件的格式,看个人需求
  8. let arr = ['jpg', 'JPG', 'png', 'PNG', 'pdf', 'PDF', 'doc', 'DOC', 'docx',
  9. 'DOCX', 'jpeg', 'JPEG', 'gif', 'GIF', 'bmp', 'BMP']
  10. // 判断文件是否重复选择,如何重复选择,则给提示,将文件的路径存储到一个空数组中
  11. if (this.fileList.indexOf(e.path) == -1) {
  12. this.fileList.push(e.path)
  13. } else {
  14. uni.showModal({
  15. content: '附件已经选择,请勿重复选择',
  16. showCancel: false,
  17. })
  18. }
  19. },
  20. // 提交文件
  21. async uploadFile() {
  22. uni.showLoading({
  23. title: '文件上传中,请稍后',
  24. mask: true
  25. });
  26. // 通过for循环和 uni.uploadFile 将你存储到数组中的文件依次到服务器,获取文件的下载地址
  27. for (let i = 0; i < this.fileList.length; i++) {
  28. await uni.uploadFile({
  29. // url 是你接口前面的公共部分
  30. url: url + '上传文件路径',
  31. methods: 'post',
  32. filePath: this.fileList[i],
  33. name: 'file',
  34. formData: {
  35. // 上传是带的参数在这里面放着
  36. },
  37. success: async (uploadFileRes) => {
  38. let route = JSON.parse(uploadFileRes.data);
  39. let files = route.content.rows
  40. // 将服务器返回的文件地址存储到数组中
  41. this.list.push(...files)
  42. if (route.state == 1) {
  43. // 这个是判断文件路径是否全部上传到服务器中--文件全部上传到服务器后开始提交文件
  44. if (this.list.length == this.fileList.length) {
  45. // 提交文件
  46. const { data } = await this.$http({
  47. url: '文件提交路径',
  48. method: 'post',
  49. data: {
  50. // 提交文件的参数
  51. }
  52. })
  53. if (data.state == 1) {
  54. uni.hideLoading()
  55. uni.showModal({
  56. content: "文件上传成功",
  57. showCancel: false,
  58. })
  59. } else {
  60. uni.hideLoading()
  61. uni.showModal({
  62. content: data.message,
  63. showCancel: false
  64. })
  65. }
  66. }
  67. } else {
  68. uni.hideLoading()
  69. uni.showModal({
  70. content: route.message,
  71. showCancel: false
  72. });
  73. }
  74. },
  75. fail: (err) => {
  76. uni.hideLoading();
  77. uni.showModal({
  78. content: '附件选择失败,请重试',
  79. showCancel: false
  80. });
  81. }
  82. })
  83. }
  84. },
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/571050
推荐阅读
相关标签
  

闽ICP备14008679号