当前位置:   article > 正文

微信小程序开发—(四)上传图片_res.tempfilepaths

res.tempfilepaths

一.了解wx.chooseImage(OBJECT)

二.代码编程

在pages文件里面创建uploadimg文件夹

1.编写页面结构:uploadimg.wxml

 

  1. <span style="color:#333333"><view class="container" style="padding:1rem;">
  2. <button type="primary"bindtap="chooseimage">获取图片</button>
  3. <image src="{{tempFilePaths }}" mode="aspecFill" style="width: 100%; height: 450rpx;margin:1rem 0;"/>
  4. </view></span>


2.设置数据:uploadimg.js

 

这是单图片上传

  1. //获取应用实例
  2. var app = getApp()
  3. Page({
  4. data: {
  5. tempFilePaths: '',
  6. },
  7. /**
  8. * 选择图片
  9. */
  10. chooseimage: function () {
  11. var _this = this;
  12. wx.chooseImage({
  13. count: 1, // 默认9
  14. // 可以指定是原图还是压缩图,默认二者都有
  15. sizeType: ['original', 'compressed'],
  16. // 可以指定来源是相册还是相机,默认二者都有
  17. sourceType: ['album', 'camera'],
  18. // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
  19. success: function (res) {
  20. //执行上传图片到服务端
  21. _this.setData({
  22. tempFilePaths:res.tempFilePaths
  23. })
  24. _this.uploadFile(res.tempFilePaths);
  25. }
  26. })
  27. },
  28. //上传图片
  29. uploadFile:function(imgPaths){
  30. wx.uploadFile({
  31. url: Api.valiFaceApi, // 接口地址
  32. filePath:imgPaths[0],//这个是默认的传参 图片地址
  33. name: 'img',//如果是图片则img,如果是文件则file,视频则video
  34. formData: {
  35. id:"2222" //这个是其他的参数
  36. },
  37. success(res) {
  38. wx.hideLoading();
  39. if(JSON.parse(res.data).success ==true){
  40. setTimeout(function(){
  41. wx.showToast({
  42. title:"上传成功",
  43. icon: 'none',
  44. duration: 2000
  45. });
  46. },100);
  47. }else{
  48. setTimeout(function(){
  49. wx.showToast({
  50. title: JSON.parse(res.data).msg,
  51. icon: 'none',
  52. duration:5000
  53. });
  54. },100)
  55. }
  56. }
  57. })
  58. //或是后端重新定义的 字段 ,不走默认filePath
  59. wx.uploadFile({
  60. url: Api.valiFaceApi, // 接口地址
  61. name: 'file',//这个是根据后台接口写的名字文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
  62. header: {
  63. 'Content-Type': 'multipart/form-data'
  64. },
  65. formData: {
  66. 'file': imgPaths[0]
  67. },
  68. success(res) {
  69. wx.hideLoading();
  70. if(JSON.parse(res.data).success ==true){
  71. setTimeout(function(){
  72. wx.showToast({
  73. title:"上传成功",
  74. icon: 'none',
  75. duration: 2000
  76. });
  77. },100);
  78. }else{
  79. setTimeout(function(){
  80. wx.showToast({
  81. title: JSON.parse(res.data).msg,
  82. icon: 'none',
  83. duration:5000
  84. });
  85. },100)
  86. }
  87. }
  88. })
  89. }
  90. })

 

 

 

多张图上传

  1. <view class="uploadImg" wx:if="{{photosList.length>0}}" >
  2. <view class="chart_img" wx:for="{{photosList}}" wx:for-index="index" wx:key="index" wx:for-item="image">
  3. <image mode='aspectFill' src="{{image}}" data-src="{{image}}" data-list="{{photosList}}" bindtap="previewImage"></image>
  4. <i class="iconfont icon-close-b" data-index="{{index}}" bindtap="closeImg"></i>
  5. </view>
  6. </view>
  7. //获取应用实例
  8. var app = getApp()
  9. Page({
  10. data: {
  11. picUrl:[],//这个是上传成功后,后端返回来的图片地址 ,最后要传给后端的
  12. photosList:[],//这是预览的图片地址
  13. },
  14. /**
  15. * 选择图片
  16. */
  17. chooseimage: function () {
  18. var _this = this;
  19. if (this.data.picUrl.length >= 9) {
  20. wx.showToast({
  21. title: '添加图片最多9张',
  22. icon: 'none',
  23. duration: 1000
  24. })
  25. return;
  26. }
  27. wx.chooseImage({
  28. count: 9,
  29. sizeType: ['original', 'compressed'],
  30. sourceType: ['album', 'camera'],
  31. success: function (res) {
  32. var successUp = 0; //成功
  33. var length = res.tempFilePaths.length; //总数
  34. var count = 0; //第几张
  35. this.uploadOneByOne(res.tempFilePaths, successUp, count, length);
  36. },
  37. });
  38. },
  39. //上传图片
  40. uploadFile:function( imgPaths, successUp, count, length){
  41. let photosUrl = [], photosListshow=[];
  42. var that = this;
  43. wx.uploadFile({
  44. url: API.upload(), //仅为示例,非真实的接口地址 "https://twzx.191cn.com/pat-api/file/upload",//
  45. filePath: imgPaths[count],
  46. name: 'file',//这个是根据后台接口写的名字文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
  47. header: {
  48. 'Content-Type': 'multipart/form-data'
  49. },
  50. formData: {
  51. 'file': imgPaths[count]
  52. },
  53. success: function (e) {
  54. let res = JSON.parse(e.data);
  55. if (res.success == true) {
  56. console.log("请求成功2")
  57. successUp++;//成功+1
  58. photosUrl = mythis.data.picUrl;
  59. photosListshow = mythis.data.photosList;
  60. photosListshow.push(imgPaths[count]);
  61. photosUrl.push(res.entity);
  62. console.log(photosUrl, photosListshow)
  63. that.setData({
  64. photosList: photosListshow
  65. })
  66. }
  67. },
  68. complete: function (e) {
  69. count++;//下一张
  70. if (count == length) {
  71. //上传完毕,作一下提示
  72. console.log('上传成功' + successUp);
  73. wx.showToast({
  74. title: '这次上传成功' + successUp + "张",
  75. icon: 'none',
  76. duration: 1000
  77. })
  78. } else {
  79. // photosUrl.push(count);
  80. console.log(photosListshow, "图片地址")
  81. if (photosUrl.length >= 9) {
  82. wx.showToast({
  83. title: '添加图片最多9张,请重新选择图片',
  84. icon: 'none',
  85. duration: 1000
  86. })
  87. return;
  88. } else {
  89. that.setData({
  90. picUrl: photosUrl,
  91. photosList:photosListshow
  92. })
  93. //递归调用,上传下一张
  94. uploadOneByOne(imgPaths, successUp, count, length);
  95. }
  96. }
  97. }
  98. })
  99. }
  100. })

 材料参考

三.注意问题

1. wx.uploadFile 只能一张一张上传

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

闽ICP备14008679号