在iphone微信内打开一个pdf或是docx格式文件下载链接的网页如何实现正常的在线预览呢

发布于 2022-09-11 18:56:04 字数 1561 浏览 16 评论 0

问题描述

对于同一个链接,PC端和andriod点击之后为下载操作,但是ios是在线预览,网上查找说是ios不支持下载,那么有没有办法是ios能够正常的在线预览呢?

代码

api层代码:当请求到该路由时,会拿图片id到数据库中操作获取图片16进制字符串,在这里转码之后传到前端页面

router.get('/download/:id', async (ctx) => {
    const picture = await getFileById(ctx.params)
    const data = Buffer.from(picture.results.FileContent, 'hex')
    const path = picture.results.FileName.split('.')
    const fileName = path.splice(0,path.length-1).join('.')
    const fileType = path[path.length-1]

    ctx.set('Content-Type','application/octet-stream;;charset=utf-8')

    let agent = ctx.headers['user-agent'].toLowerCase()
    let newFileName = urlencode.encode(fileName, "UTF-8")
    if(agent.includes('firefox') || agent.includes('micromessenger')){ //火狐或者微信内置浏览器
        console.log('-------------------------------1-----------------------------')
        ctx.set("Content-Disposition", "attachment;filename*=" + newFileName + '.' + fileType)
    }
    else {
        console.log('-------------------------------2-----------------------------')
        ctx.set("Content-Disposition", "attachment;filename=" + urlencode(fileName) + '.' + fileType)
    }
    ctx.body = data
})

clinet层:当点击链接时开始下载,代码如下:

 window.open(this.detailInfo.attachments[0].FilePath, this.detailInfo.attachments[0].FileName)

现在的效果?

PC端点击之后:
clipboard.png

iphone中点击之后:
![图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

星光不落少年眉 2022-09-18 18:56:04

怎么解决的,老哥

浪菊怪哟 2022-09-18 18:56:04

后来搞定了嘛,老哥

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文