当前位置:   article > 正文

微信小程序上传图片和文件_小程序上传本地文件

小程序上传本地文件

1.从微信里选择图片或文件上传

使用的vant的上传组件  原生用 wx.chooseMessageFile()

html

  1. <!-- 从微信上面选择文件 -->
  2. <van-uploader file-list="{{ file }}" bind:after-read="afterRead" max-count="{{3}}" deletable="{{ true }}" bind:delete="deleteAll" accept="all">
  3. <van-button custom-class="fup" square icon="plus" type="default"></van-button>
  4. </van-uploader>

max-count 是限制上传图片数量 可以不设置该属性

 js

  1. // 从微信选择上传文件
  2. afterRead(e) {
  3. let that = this
  4. console.log("上传的文件:", e.detail.file);
  5. wx.uploadFile({
  6. accept: "all",
  7. url: 'http://www.com/upload', // 仅为示例,非真实的接口地址
  8. filePath: e.detail.file.url,
  9. name: 'file',
  10. header: {
  11. 'token': wx.getStorageSync("token"),// 请求需要token就带,不需要就删除
  12. },
  13. success(res) {
  14. console.log(res);
  15. let data = JSON.parse(res.data)
  16. data.data.name = e.detail.file.name
  17. if (data.code == 1) {
  18. wx.showToast({
  19. icon: 'none',
  20. title: '上传成功!',
  21. duration: 2000
  22. })
  23. // 上传完成需要更新 fileList
  24. let file = that.data.file
  25. file.push(data.data)
  26. that.setData({
  27. file
  28. })
  29. console.log(that.data.file);
  30. } else {
  31. wx.showToast({
  32. icon: 'none',
  33. title: '上传失败!',
  34. duration: 2000
  35. })
  36. }
  37. },
  38. });
  39. },
  40. // 删除上传文件
  41. deleteAll(e) {
  42. console.log(e);
  43. let filearr = this.data.file
  44. filearr.splice(e.detail.index, 1)
  45. this.setData({
  46. file: filearr
  47. })
  48. console.log(this.data.file);
  49. },

2.从相册选择图片上传

html 

  1. <!-- 从相册选择图片 -->
  2. <view style="display: flex;justify-content: start;flex-wrap: wrap;margin-top: 20rpx;">
  3. <view wx:for="{{file}}" wx:key="{{index}}" class="img">
  4. <image src="{{item.url}}" mode="widthFix" />
  5. <view class="del" bindtap="deleteAll" data-index="{{index}}">
  6. <van-icon name="cross" />
  7. </view>
  8. </view>
  9. <van-button custom-class="fup" bindtap="pushimg" square icon="plus" type="default"></van-button>
  10. </view>

js

  1. // 删除上传文件
  2. deleteAll(e) {
  3. console.log(e);
  4. let filearr = this.data.file
  5. filearr.splice(e.detail.index, 1)
  6. this.setData({
  7. file: filearr
  8. })
  9. console.log(this.data.file);
  10. },
  11. // 从相册选择图片
  12. pushimg() {
  13. let that = this
  14. wx.chooseImage({ // 本地资源上传到服务器API
  15. success: function (e) {
  16. console.log(e);
  17. var tempFilePaths = e.tempFilePaths;
  18. wx.uploadFile({
  19. accept: "all",
  20. url: 'http://www.com/upload', // 指定服务器接口URL
  21. filePath: tempFilePaths[0], // 本地文件路径,即选择文件返回的路径
  22. header: {
  23. 'token': wx.getStorageSync("token"),// 请求需要token就带,不需要就删除
  24. },
  25. name: 'file', // 上传文件的key,后台要用到
  26. success: function (res) { //成功后的回调函数
  27. console.log(res);
  28. let data = JSON.parse(res.data)
  29. data.data.name = new Date()
  30. if (data.code == 1) {
  31. wx.showToast({
  32. icon: 'none',
  33. title: '上传成功!',
  34. duration: 2000
  35. })
  36. // 上传完成需要更新 fileList
  37. let file = that.data.file
  38. file.push(data.data)
  39. that.setData({
  40. file
  41. })
  42. console.log(that.data.file);
  43. } else {
  44. wx.showToast({
  45. icon: 'none',
  46. title: '上传失败!',
  47. duration: 2000
  48. })
  49. }
  50. }
  51. })
  52. }
  53. })
  54. },

less 

  1. .img {
  2. position: relative;
  3. width: 80px;
  4. margin-right: 15rpx;
  5. overflow: hidden;
  6. image {
  7. width: 100%;
  8. }
  9. .del {
  10. color: #ffffff;
  11. background-color: #000000;
  12. width: 40rpx;
  13. height: 40rpx;
  14. position: absolute;
  15. text-align: center;
  16. top: -13rpx;
  17. right: -13rpx;
  18. border-radius: 50%;
  19. z-index: 99;
  20. font-size: 20rpx;
  21. padding-top: 10rpx;
  22. padding-right: 10rpx;
  23. box-sizing: border-box;
  24. }
  25. }

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

闽ICP备14008679号