• 请不要在回答技术问题时复制粘贴 AI 生成的内容
darknoll
V2EX  ›  程序员

后端返回二进制文件流,前端用 blob 接收,接着 chrome 使用外部第三方程序打开,这个能做到吗?

  •  
  •   darknoll · Nov 2, 2020 · 3051 views
    This topic created in 2043 days ago, the information mentioned may be changed or developed.

    因为该文件格式是公司自定义的文件格式,只有公司自己的软件才可以打开。 能实现这个功能吗?

    14 replies    2020-11-02 19:20:58 +08:00
    lamada
        1
    lamada  
       Nov 2, 2020
    pc 上不清楚,手机上 url schema 可以唤起第三方 app 。不过你这 blob 也得先保存到本地文件吧。
    treblex
        2
    treblex  
       Nov 2, 2020
    @lamada #1 把 url 拼好给软件不就行了,下载和解码在软件做
    jiangnan01
        3
    jiangnan01  
       Nov 2, 2020
    应该是可以的,参考磁力链唤起迅雷
    lamada
        4
    lamada  
       Nov 2, 2020
    @suke971219 老哥说的在理,交给软件内处理就好了。我猜 lz 的意思是软件不支持自己下载
    takemeaway
        5
    takemeaway  
       Nov 2, 2020
    可以的。 前端接收后的需要是完整文件。
    然后通过浏览器唤起自己的软件去打开。
    wmhx
        6
    wmhx  
       Nov 2, 2020
    腾讯会议, 莫某视频, 不都是这样的吗
    also24
        7
    also24  
       Nov 2, 2020
    需要多一步,blob 要先存储在本地。
    实际流程,类似 mega 网盘的下载过程。
    darknoll
        8
    darknoll  
    OP
       Nov 2, 2020
    @suke971219 可能你这个是唯一的方法了
    darknoll
        9
    darknoll  
    OP
       Nov 2, 2020
    @also24 前端把文件存储在本地,这就是个大问题,用户体验特别不好。首先存储的路径如果不想自己选,那只能存在浏览器默认下载路径,如果每次都手动选下载目录,体验更差。
    also24
        10
    also24  
       Nov 2, 2020
    @darknoll #9
    我举 mega 的例子,其实就是想说我觉得这样体验很一般 hhhh


    我还是比较赞成直接传递 URL 的方案。
    cheese
        11
    cheese  
       Nov 2, 2020
    不太行,还是参考豆瓣,知乎一类的,网页调用 app 方案吧
    xyjincan
        12
    xyjincan  
       Nov 2, 2020 via Android
    chrome 最新文件 api 支持文件和文件夹修改了
    KuroNekoFan
        13
    KuroNekoFan  
       Nov 2, 2020
    通过 url scheme 唤起第三方 app 问题不大,问题是如何传递文件路径。理论上浏览器和你家 APP 应该是隔离的,不过用常见的 c:/$USER/Downloads 来猜测一下文件路径,如果没有文件再让用户自选感觉是可行的方案
    edk24
        14
    edk24  
       Nov 2, 2020
    你可以参考迅雷 /旋风链接的形式, 但是在浏览器中, 除非奇葩的手段, 是不能用 js 往用户电脑上写文件的, 因为这会使得用户电脑很不安全, 比如我替换难道某些系统文件, 加 hook 给你写入病毒等

    所以,我个人推荐的方法是, 内部软件和后端上做个约定, 一串类似迅雷的链接唤起来, 在内部软件中下载 blob.

    如果 blob 小, 可以考虑用`协议://base64`替代, 但你要知道, 这种类型的 url 长度是有限的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3153 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 00:36 · PVG 08:36 · LAX 17:36 · JFK 20:36
    ♥ Do have faith in what you're doing.