小弟接手维护了一个移动端的小网站,有一个导出 pdf 文件的功能,被客户引入到了他们的 APP 中,下载功能异常。
服务端:Node.js / TypeORM / Apollo / GraphQL / MySQL
前后端都使用 TypeScript,采用 Docker 部署。
后端用puppeteer
生成 pdf 文件到服务端某个用 nginx 配置好的静态文件夹中,返回 url 给前端用动态生成 a 标签的方法生成下载。
在移动端的 Safari 和 Chrome 中都能正常下载并打开以及保存到本地,但是在客户的 APP 中,下载时候会打开 pdf 文件(我猜是预览),导致没办法操作页面了,并且打开的文件显示乱码。
所以,有没有老哥知道为什么 APP 中功能表现异常? h5 有办法能实现内嵌在别的应用后还能使用下载功能吗?
1
thinkingbullet 2021-01-14 12:19:14 +08:00
iOS 不允许直接在浏览器中打开文件(下载文件)
|
2
sam014 2021-01-14 12:19:32 +08:00
APP webview 配置的问题?
|
3
Carseason 2021-01-14 12:21:14 +08:00 via Android
nginx 为这类文件强制下载方式呗。不然带 pdf 预览的都是会直接预览
|
4
sybb OP @thinkingbullet 虽然我不太清楚你说的打开和下载是怎样的情况,但是这边再 nginx 中设置 content-type 什么后 目前已实现了在浏览器中下载并不会自动打开的哈,Safari 的表现是先弹出一个下载提示确认框,点击确认后,就在地址栏后面有一个正在下载的图标了。
@sam014 我甚至还不确定使用什么方式引入进去的 @Carseason 已经设置了哈, 在浏览器中打开能直接下载,但是在他们的 APP 中就不行,并且打开后还乱码 |
5
whypool 2021-01-14 12:37:48 +08:00 via Android
正常,要实现下载,app 开接口,申请写入文件权限才行
|
6
meepo3927 2021-01-14 14:54:52 +08:00
应该是 iOS 需要针对处理, 不能像 Android 或者桌面端一样直接下载。
同 1 楼和 5 楼 。 |
7
woxihejinghao 2021-01-14 15:27:15 +08:00
iOS 需要 APP 那边进行处理
|