收藏
回答

微信wx.downloadFile不能下载文件

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 Bug wx.downloadFile 客户端 6.6.7 2.0.0

wx.downloadFile在调用该接口时候,文档名因为是中文名,直接调用失败,后来我进行了

url = encodeURI(url)转码,有些文件可以下载,有得文件就下载不了,连onProgressUpdate

进度函数都没有调用,而是success函数里返回给我一串以.msword结尾的res.tempFilePath数据,{tempFilePath: "http://tmp/wx40161b6ba4238139.o6zAJs1p3tFQnWMBRMqx…dutsbMXDPU1be843e24cdeed91adee4ba80a4695d7.msword", statusCode: 200, errMsg: "downloadFile:ok"};

但是wx.openDocument是不能识别这串res.tempFilePath;我想主要的原因还是没有下载,因为连onProgressUpdate都没有进入,证明这个文件就没有开始下载,我想问问技术人员这是什么的问题,因为是给政务大厅写的东西,相关文档都要求下载的,忘大佬帮忙解决



最后一次编辑于  2018-07-12
回答关注问题邀请回答
收藏

2 个回答

  • 晴天
    晴天
    2018-08-16

    tempFile就是临时文件的储存路径,这个是已经下下来了,这两天碰到你一样的问题,这个是word的doc格式下载下来后缀名就会改成msword,如果是docx就可以,这一点我也没有解决...如果是存到tempFile,最好wx.downloadFile下面再加一个预览文件的方法wx.openDocument,直接预览,要不然就保存到本地,用wx.saveFile做


    2018-08-16
    赞同
    回复
  • 没有肉很多只是胖嘟嘟
    没有肉很多只是胖嘟嘟
    2018-07-12

    download: function(e) {

        var that = this;

        console.log(e)

        var data = {

          "fileName": e.currentTarget.dataset.name,

          "fileNo": e.currentTarget.id

        }

        console.log(data)

        wx.request({

          url: getApp().globalData.url + 'file/download',

          header: {

            'Content-Type': getApp().globalData.contentType

          },

          method: "POST",

          data: data,

          dataType: 'json',

          success: function(data) {

            console.log(data);

            if (data.data.code == 200) {

              if (e.currentTarget.dataset.name) {

                var url = getApp().globalData.url + "resources/" + e.currentTarget.dataset.name;

                url = encodeURI(url);

                const downloadTask = wx.downloadFile({

                  url: url,

                  success: function(res) {

                    console.info(res)

                    if (res.statusCode == 200 && res.tempFilePath) {

                      if (check.check.isImage(res.tempFilePath)) {

                        console.log("这是张图片");

                        that.setData({

                          downimg: res.tempFilePath,

                          imgshow: true,

                        })

                      } else {

                        var filePath = res.tempFilePath;

                        wx.saveFile({

                          tempFilePath: filePath,

                          success: function(res1) {

                            console.info(res1)

                            var filep = res1.savedFilePath;

                            wx.openDocument({

                              filePath: filep,

                              success: function(res2) {

                                //console.info(res2)

                                //console.log('打开文档成功')

                              },

                              fail: function(res) {

                                //console.log(res)

                                wx.showToast({

                                  title: '该文件暂不提供下载!',

                                  icon: 'none'

                                });

                              }

                            })

                          }

                        })

                      }

                    }

                  }

                })

                downloadTask.onProgressUpdate((res) => {

                  wx.showLoading({

                    title: '下载进度 ' + res.progress + "%",

                  })

                  if (res.progress == 100){

                    wx.hideLoading();

                  }

                })

              } else {

                wx.showToast({

                  title: '该文件暂不提供下载!',

                  icon: 'none'

                });

              }

            } else {

              wx.showToast({

                title: '该文件暂不提供下载!',

                icon: 'none'

              });

            }

          }

        })

    这是我dwonload的整个代码

    2018-07-12
    赞同
    回复