请问previewFile做文件预览,安卓可以打开,IOS预览有问题:下载失败:请检查网络重试?

2024/07/19
提问

看到社区上的配置

1、在index.html 引用在线的jsdk:<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

2、预览的文件大小size符合在在线预览的文件大小

3、在预览文件之前,用了window.wx.config()进行了提前配置预检,成功之后调用了 wx.invoke('previewFile', {size, name, url})


以上三点都配置好了,请问ios文件预览到底要怎么解决?

回答·2
2024/07/22
提问者认同了该回答

请问安卓预览doc文件,预览页面提示这个是什么意思?

赞同 1
评论
提问者认同了该回答

您好,调用预览文件接口,里面填的文件大小需要与传入的文件大小完全一致,不然ios调用会报错,下载失败,请检查网络

赞同 1
评论 28
2024/07/19
已经检查过了,我也备注了,确实是大小一样的,除此之外还有什么问题
赞同
回复
2024/07/19
请查看图片,以下是安卓(左)和苹果手机(右)打印出来是入参{size,name,url},参数一直,url不同不影响,因为是通过window.URL.createObjectURL(blob)出来的地址,请问还有什么方案可以排查问题。
赞同
回复
回复 2024/07/22
ios需要很精确,请再自行检查下。
赞同
回复
回复 2024/07/22
这个size是 通过new Blob() 之后返回的 size值,请问通过哪种方法可以获取更精确的值。
赞同
回复
回复 2024/07/22
通过文件属性查看源文件大小和目前打印的大小是同样大的,请查看图片
赞同
回复
回复 2024/07/22
需要url本身就可以下载
赞同
回复
回复 2024/07/22
可以下载的,后端返回的是文档流,然后我是通过window.URL.createObjectURL(blob)这种方式 生成的url,我试过PC端模拟手机端通过创建a标签模拟点击可以下载;安卓手机通过wx.invoke('previewFile'这种形式全部可以浏览和下载,目前就ios不能下载,请问我通过这种方式生成的url是否有问题?
赞同
回复
回复 2024/07/22
是通过这种方式生成的url:
      const blob = new Blob([response], { type: fileType })
      const url = window.URL.createObjectURL(blob)
赞同
回复
回复 2024/07/22
请提供下文件url
赞同
回复
回复 2024/07/22
我的入参是这个:
{
    name: "1263801155478650880.doc",
    size: 12720,
    url: "blob:http://localhost:9020/4ad219d1-4083-474e-a5af- 
            2066967b397f"
}

这个是本地的,拿不到产线上的url,但是这个url不是文件的目录真实地址,而是通过window.URL.createObjectURL(blob) 生成的url,应该不存中文路径(看到你们官方回复的说地址存在中文ios无法解析会出现这个问题,这个url应该不会出现中文的情况)。
赞同
回复
回复 2024/07/22
请问,这个url是用blob内容的引用还是真实的DataUrl(blob)。

1、URL.createObjectURL 创建的是一个引用 Blob 对象的 URL,不实际读取 Blob 的内容。
2、FileReader 读取 Blob 的内容,并将其转换为可以显示的格式(如 Data URL)。

我目前是采用的第一种方式来获取的url。
赞同
回复
回复 2024/07/22
需要公网下可下载
赞同
回复
回复 2024/07/22
这个url是文档流的引用地址,我给你这个地址估计也没法用,请查看下面这个外网可访问
blob:http://mobileweb-test.jinjiangfssc.com/9a5ff99e-2677-45b7-a5b3-1f9468fad35f
赞同
回复
回复 2024/07/22
可以将文件地址用外部浏览器访问,需要外部浏览器在公网下可以正常访问且下载才行。
赞同
回复
回复 2024/07/22
我这个地址按道理发布到到产线上是可以访问的,但是我如果贴给出来给你,你那边估计就不能访问了,因为window.URL.createObjectURL(blob)生成的url是对blob源文件的引用地址,我当面页面有blob文件,访问这个url可以生效,但是不能单独拿出来,这个url就相当于是一个短链接一样的
赞同
回复
回复 2024/07/22
你是说这个url必须要真正的服务器上的url文件地址才可以,比如:"http://www.xx.com/file/abc/abc.pdf"这种吗?,那这种短连接的方式,无法通过wx.invoke('previewFile' 这个api进行进行预览吗?
赞同
回复
回复 2024/07/22
就是文件的下载地址,需要公网下可访问并正常下载才行。
赞同
回复
回复 2024/07/22
好的 多谢,这种短连接的方式在公网上也是可以访问的,等上线之后再试试看看。只是贴出来是不生效的。
赞同
回复
回复 2024/07/22
请问下 现在安卓手机访问出现这个问题是什么原因呢?
赞同
回复
回复 2024/07/22
建议先在pc上调试看看,https://developer.work.weixin.qq.com/document/path/90315#%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%B0%83%E8%AF%95
赞同
回复
2024/09/24
调通了,出现以上问题的关键点是,url不是应该是真正的文件地址,而不是blob文档流。


            








赞同
回复
回复 2024/12/05
你好,后面又遇到一个问题,其他参数都符合条件,唯独url的协议有http换成了https后不能预览成功,请问不支持这个协议的预览吗?
赞同
回复
回复 2024/12/05
url原来是可以下载的吗?
赞同
回复
回复 2024/12/05
是的,原来和现在的url外网都是可以下载的,唯独换到了静态资源服务器上,htttps的协议,目前不能预览了
赞同
回复
2024/12/05
目前是这个情况,各种附件预览,都是停留在这个界面,点击‘继续下载’没有任何反应。
赞同
回复
回复 2024/12/05
这个URL也测试过,在PC端浏览器打开,会立即下载文件,没有问题
赞同
回复
回复 2024/12/05
好的,提供具体案例这边反馈看下
问题描述:
Corpid:
测试者手机号:
调用接口:
出现问题时间点(具体到月日时分):
客户端系统(win/ios/android):
客户端版本号:
截图:
赞同
回复
回复 2024/12/05
多谢,已联系企业微信团队在解决,有解决方案在这里同步。
赞同
回复
你还未登录,请先登录