小程序多文件上传

时间:2024-10-03 13:26:28

       想想从学校出来到公司实习一眨眼都工作三个月了,这三个月在公司的感觉就是学的很杂,前端设计,后端设计,还有小程序之类的,但是没办法啊,领导想要什么,我们就得实现什么(心里疯狂骂产品,疯狂的该需求)。今天写着篇博客就是为了积攒点代码量,以后从公司离职后,写过的代码也好有个印象。

    好啦,进入正题吧,前几天实现了一个小程序的多文件上传。多文件上传,简单来说 他就是将图片一张一张的存到集合里面,然后将这个集合传入后台再进行上传。好啦 废话不多说  进入正题吧

我们通过upVideo2这个方法可以加载相应的js

  1. <view class="section-tent" style="margin-bottom:0rpx;">
  2. <view class="section">
  3. <view class="se-left">
  4. <span style="margin-left:10px"></span> 附件:
  5. </view>
  6. <button bindtap="upVideo2" style='font-size:30rpx;margin-right:10rpx;'>选择图片
  7. </button>
  8. </view>
  9. <view class="file" wx:for="{{imgUrlList}}" wx:key="FILEID" wx:for-item="value" wx:for-index="index" data-index="{{index}}" >
  10. <input type='hidden' hidden="true" name="FILENAME" value="{{}}"></input>
  11. <input type='hidden' hidden="true" name="FILEID" value="{{}}"></input>
  12. <input type='hidden' hidden="true" name="FILEURL" value="{{}}"></input>
  13. <image src="{{}}" class='phone1'></image>
  14. </view>
  15. </view>

既然是多文件上传,那么在这里我们可以使用递归来进行调用

  1. uploadDIY(filePaths, i, length, imgUrlList) {
  2. var that = this
  3. wx.uploadFile({
  4. url: app.data.baseImageUrl + 'file-storage/uploadMultiple',//文件上传路径
  5. filePath: filePaths[i],
  6. name: 'fileInput',
  7. header: {
  8. 'content-type': 'multipart/form-data'
  9. },
  10. formData: { 'userid': app.data.userId },
  11. success: function (res) {
  12. //("===" + )
  13. var data = JSON.parse(res.data);
  14. //保存 附件 数据库 信息 并返回 图片 具体地址路径
  15. wx.request({
  16. url: app.data.baseUrl + 'xqhz/activity/wxtext/',
  17. data: {
  18. files: JSON.stringify(data),
  19. },
  20. method: 'GET',
  21. header: {
  22. 'content-type': 'application/json'
  23. },
  24. success: function (res) {
  25. if (res.data.data == "") {
  26. } else {
  27. var data = ''
  28. data = res.data.data[0]
  29. imgUrlList.push(data)
  30. that.setData({
  31. imgUrlList
  32. })
  33. }
  34. i++;
  35. if (i == length) {
  36. that.setData({
  37. imgUrlList:that.data.imgUrlList
  38. })
  39. console.log(that.data.imgUrlList)
  40. }
  41. else { //递归调用uploadDIY函数
  42. that.uploadDIY(filePaths, i, length, that.data.imgUrlList);
  43. }
  44. },
  45. })
  46. },
  47. })
  48. },

然后我们可以通过小程序中的来进行图片的选择。这里我是通过递归来将图片存入到数组里的 

  1. upVideo2: function (e) {
  2. var that = this
  3. if (that.data.imgUrlList!=undefined){
  4. if (that.data.imgUrlList.length>0){
  5. var imgUrlList = that.data.imgUrlList
  6. }
  7. }else{
  8. var imgUrlList = [];
  9. }
  10. console.log(imgUrlList)
  11. wx.chooseImage({
  12. count: 8,
  13. sourceType: ['album', 'camera'],// 指定文件的来源,album只允许相册中选择,camera是相机拍摄,两个都允许以逗号相隔。
  14. success: function (res) {
  15. console.log('选择',res)
  16. var successUp = 0; //成功个数
  17. var failUp = 0; //失败个数
  18. var length = res.tempFilePaths.length; //总共个数
  19. var i = 0; //第几个
  20. that.uploadDIY(res.tempFilePaths, i, length, imgUrlList);
  21. }
  22. })
  23. },

 然后运行结果

到这多文件上传就写完了,这里我是直接把我的代码贴出来了,你们也不用全部复制,主要就是看这个原理,把递归看明白了代码自然就会写啦,下篇可以写一下延迟删除功能,有兴趣的可以看看哟~