收藏
回答

如何下载多个文件到本地?

wx.cloud.downloadFile

wx.getFileSystemManager().saveFile

需求是在PC端下载云储存里大量视频文件到本地,并且可以自定义名称,单个视频都不超过200,但是总量肯定会超,下载前几个视频后就保存失败了,请教大家有什么方法能解决

回答关注问题邀请回答
收藏

1 个回答

  • 姚家锋
    姚家锋
    04-01

    在PC端微信小程序上下载云存储里的大量视频文件到本地,并允许自定义名称,且单个视频文件不超过200MB但总量较大时,确实需要考虑一些策略来有效处理下载过程。以下是一些建议的方法:

    • 分批下载:由于总量较大,不宜一次性下载所有视频。可以将视频列表进行分页或分组,然后分批次下载。
    • 每批下载完成后,可以通知用户或自动开始下一批的下载。
    • 自定义下载队列:允许用户选择想要下载的视频,并将它们添加到下载队列中。
    • 用户可以自定义下载顺序,优先下载重要的视频。
    // 假设这是你的微信小程序页面的JS文件  
    Page({  
      // ... 其他页面代码 ...  
      
      // 下载视频文件的函数  
      downloadVideo: function(videoId, customName) {  
        const that = this;  
        // 调用云存储API获取视频文件的下载链接  
        wx.cloud.callFunction({  
          name: 'getVideoDownloadURL', // 云函数名称,用于获取下载链接  
          data: {  
            videoId: videoId // 视频的唯一标识  
          },  
          success: function(res) {  
            const downloadURL = res.result.url; // 获取到的视频下载链接  
            if (downloadURL) {  
              // 使用微信小程序的downloadFile API下载文件  
              wx.downloadFile({  
                url: downloadURL, // 下载链接  
                success: function(downloadRes) {  
                  if (downloadRes.statusCode === 200) {  
                    // 文件下载成功,开始保存文件到本地  
                    const tempFilePath = downloadRes.tempFilePath; // 临时文件路径  
                    const saveFilePath = wx.env.USER_DATA_PATH + '/' + customName + '.mp4'; // 自定义保存路径和文件名  
                    // 将临时文件移动到指定路径  
                    wx.saveFile({  
                      tempFilePath: tempFilePath,  
                      destPath: saveFilePath,  
                      success: function(saveRes) {  
                        wx.showToast({  
                          title: '下载成功',  
                          icon: 'success',  
                          duration: 2000  
                        });  
                        // 处理下载成功后的逻辑,比如更新UI等  
                      },  
                      fail: function(err) {  
                        wx.showToast({  
                          title: '保存文件失败',  
                          icon: 'none',  
                          duration: 2000  
                        });  
                        console.error('保存文件失败:', err);  
                      }  
                    });  
                  } else {  
                    wx.showToast({  
                      title: '下载失败',  
                      icon: 'none',  
                      duration: 2000  
                    });  
                  }  
                },  
                fail: function(err) {  
                  wx.showToast({  
                    title: '下载失败',  
                    icon: 'none',  
                    duration: 2000  
                  });  
                  console.error('下载文件失败:', err);  
                }  
              });  
            } else {  
              wx.showToast({  
                title: '获取下载链接失败',  
                icon: 'none',  
                duration: 2000  
              });  
            }  
          },  
          fail: function(err) {  
            wx.showToast({  
              title: '调用云函数失败',  
              icon: 'none',  
              duration: 2000  
            });  
            console.error('调用云函数失败:', err);  
          }  
        });  
      },  
      
      // ... 其他页面代码 ...  
    });
    
    04-01
    有用
    回复 1
    • C3H6N6O6
      C3H6N6O6
      04-02
      wx.env.USER_DATA_PATH这个本地的文件夹好像存储上限200M,不够用呀
      04-02
      回复
登录 后发表内容