李钊
李钊
  • 发布:2020-08-18 11:19
  • 更新:2024-10-25 22:48
  • 阅读:6503

【报Bug】uniapp通过webview进行blob文件格式下载失败,但是运行到浏览器上是可以下载的

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win8 64位

HBuilderX类型: 正式

HBuilderX版本号: 2.8.6

手机系统: Android

手机系统版本号: Android 9.0

手机厂商: 小米

手机机型: 小米note3

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

let a= document.createElement("a");
a.href = blobUrl
a.download = "下载.doc" //这里填保存成的文件名
a.click();

预期结果:

真机下载成功

实际结果:

很简单的实例,就是拿到blob文件格式进行下载,真机上运行弹出下载框,点击下载,显示下载失败
运行到浏览器下载,就下载成功

bug描述:

let a= document.createElement("a");
a.href = blobUrl
a.download = "下载.doc" //这里填保存成的文件名
a.click();
很简单的实例,就是拿到blob文件格式进行下载,真机上运行弹出下载框,点击下载,显示下载失败
运行到浏览器下载,就下载成功

2020-08-18 11:19 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

怎么运行到webview中的?使用的web-view组件吗?还是renderjs?

  • 李钊 (作者)

    var currentWebview = this.$scope.$getAppWebview()

    //创建Webview窗口,用于加载新的HTML页面,可通过styles设置Webview窗口的样式,创建完成后需要调用show方法才能将Webview窗口显示出来。

    let wv = plus.webview.create("/hybrid/html/pages/filePlay.html","/hybrid/html/pages/filePlay.html",{

    'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突

    top: 0,

    height: '100%',

    background: 'transparent'

    },{

    base64:that.base64,//传参

    type:that.type//文件类型

    });

    // 在Webview窗口中添加子窗口// ${that}.bbb(objecturl)

    currentWebview.append(wv);

    2020-08-18 16:19

  • 1***@qq.com

    webview 中base64的下载及blob的下载都是失败

    2020-12-01 15:26

  • 1***@qq.com

    在uniapp中,下载的api都不支持下载blob及base64格式的文件,webview中也是无法下载的,这不算一个很小的问题了

    2020-12-03 17:22

  • DCloud_UNI_GSQ

    回复 1***@qq.com: webview和很多手机浏览器确实不支持这个,后续5+会提供存储base64为文件的API。

    2020-12-03 18:19

  • 1***@qq.com

    回复 DCloud_UNI_GSQ: ok

    2020-12-04 11:09

  • lihailan

    回复 DCloud_UNI_GSQ: blob下载二进制格式 搞好了没

    2021-01-22 17:08

DCloud_UNI_GSQ

DCloud_UNI_GSQ

APP 环境已支持存储 base64 为文件,可以参考:https://github.com/zhetengbiji/image-tools/blob/f866317abc514a14fd87adee47ef347bf4427387/index.js#L152

  • 石家庄前端

    blob 文件app端现在可以下载吗?有相关的api吗?

    2021-06-02 17:03

  • qvqv123

    能直接储存blob为文件吗

    2023-02-21 17:05

  • DCloud_UNI_GSQ

    回复 1***@qq.com: blob->base64

    2023-02-22 11:08

  • qvqv123

    试了一下,保存个500kb的,都要30秒

    2023-02-22 15:16

石家庄前端

石家庄前端 - 简书昵称:逗婆苍穹

blob 文件app端现在可以下载吗?有相关的api吗?

十年后的故事

十年后的故事 - 十年后的故事

我这边也遇到这个问题了,愁死人了

qvqv123

qvqv123

你好,作者,这个问题解决了没有

2***@qq.com

2***@qq.com - 90后IT男

我也是这样的情况app端webview加载的链接下载失败!该链接用浏览器是可以下载的

  • 7***@qq.com

    请问,解决了吗

    2023-08-15 10:28

  • w***@163.com

    +1 怎么解决的?

    2024-01-09 13:39

  • 1***@qq.com

    回复 w***@163.com: https://www.html5plus.org/doc/zh_cn/io.html#plus.io.FileWriter,利用html5+的这块直接把文件写入到手机里面

    2024-08-04 13:32

  • 4***@qq.com

    有解决的没,分享下解决方案

    2024-08-04 19:38

  • 1***@qq.com

    我的和你的一样,确认下载后通知栏就提示下载失败

    2024-09-25 17:18

  • YoungLean

    回复 1***@qq.com: 解决了么

    2024-10-16 15:49

1***@qq.com

1***@qq.com

可以用plus.downloader.createDownload api下载文件;详情可以看https://www.jianshu.com/p/d827dd9ed17e

  • qvqv123

    不支持本地生成的blob,我是要保存录屏

    2023-11-25 18:23

  • 2***@qq.com

    回复 1***@qq.com: 这个问题解决了吗,我跟你一样的需求

    2023-11-30 10:23

  • 2***@qq.com

    回复 2***@qq.com: 老哥,你搞定了吗?

    2024-02-06 15:57

1***@qq.com

1***@qq.com

有解决办法了吗???我一样的问题,想在uniapp写的app下,用webview内嵌了一个自己写的原生h5网页,然后现在想在网页内截取一段字符串生成一个txt文件,用blob那个方法下载一直失败

  • 1***@qq.com

    和你一样,只不过我是生成一个 md 文件,也还是一直下载不了,扎心了烙铁,有没有大佬救救

    2024-06-05 11:27

  • 1***@qq.com

    请问解决了吗,我也遇到了小程序要在webview内嵌的h5网页里实现文件的下载

    2024-07-29 14:49

  • 1***@qq.com

    回复 1***@qq.com: https://www.html5plus.org/doc/zh_cn/io.html#plus.io.FileWriter 利用html5+的这块直接把文件写入到手机里面

    2024-08-04 13:33

  • 1***@qq.com

    https://www.html5plus.org/doc/zh_cn/io.html#plus.io.FileWriter,利用html5+的这块直接把文件写入到手机里面

    2024-08-04 13:34

  • YoungLean

    回复 1***@qq.com: 具体是怎么实现的呢,可以详细说明一下么

    2024-10-15 09:36

1***@qq.com

1***@qq.com

我也是碰到这问题,blob总是下载失败,最后发现html5+有这个io,直接把文件写入手机里解决了这问题。
https://www.html5plus.org/doc/zh_cn/io.html#plus.io.FileWriter

4***@qq.com

4***@qq.com

也是遇到了,大家有解决的没,哪位大佬分享下解决方案

stanly

stanly

我这测试通过了,总结2个问题
1、app要有存储的权限,(照片、存储)都给
2、一定要打开通知权限

要回复问题请先登录注册