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

2020-11-02 13:57:37 +08:00
 darknoll

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

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


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

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

如果 blob 小, 可以考虑用`协议://base64`替代, 但你要知道, 这种类型的 url 长度是有限的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/720982

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX