V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Dnlyao
V2EX  ›  Node.js

接受视频文件,不保存文件在服务器,上传七牛云。该怎么实现。

  •  
  •   Dnlyao · 229 天前 · 2483 次点击
    这是一个创建于 229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前的设计是,安卓设备将视频文件分片通过接口,上传到 node 后端。现在避免的是不保存文件在服务器。 能不能实现,node 接受分片,直接上传到七牛云,最后合成 mp4 文件。 如果有更好的方法也可以改。麻烦各位了

    33 条回复    2024-05-13 15:35:22 +08:00
    imdong
        1
    imdong  
       229 天前 via iPhone
    呃,直接传七牛是有什么问题么?我记得可以直接传的来着?
    Dolov
        2
    Dolov  
       229 天前
    我以前在 web 端用过七牛的 sdk 直接把文件分片上传到七牛云,不需要经过自己的服务器
    chunriyeqiukong
        3
    chunriyeqiukong  
       229 天前
    为什么不直接在端上传到七牛
    Dnlyao
        4
    Dnlyao  
    OP
       229 天前
    @Dolov 我也想这样,但老板不想。希望可以文件经过服务器。因为项目型会改动成本地系统,那时候视频就保存本地系统。
    crownor
        5
    crownor  
       229 天前
    那你用个开源支持 OSS 的网络文件系统去作为中间件就好了嘛,这样的话想用哪种都可以,对于你后端来说都是那个文件系统的接口,实现了存储方式的透明化
    yuzo555
        6
    yuzo555  
       229 天前
    服务器是 Gbps 级别带宽,并且不限流量的?如果是这种情况可以考虑。
    Dolov
        7
    Dolov  
       229 天前   ❤️ 1
    @Dnlyao 我们的 web 系统分为云上版本和本地部署版本,用环境变量区分,如果是云上则直传七牛,如果是 op 就存储在服务器。老板知道文件多的话服务器压力很大么 ~
    Dnlyao
        8
    Dnlyao  
    OP
       229 天前
    @yuzo555 不是,10m 小水管,所以我想着安卓请求上来分片的,直接上传七牛云,不留云服务器。
    wuxin987
        9
    wuxin987  
       229 天前
    node 后端上传到七牛云之后把本地文件删除不就完了
    Dnlyao
        10
    Dnlyao  
    OP
       229 天前
    @Dolov 相同的设计方法,通过变量控制。如果本地服务器就不太需要管。但是云服务器的,还有其他东西在跑。看能不能不存储。昨天已经去跟他说了,老板去找人问,别人回复他即使 app 设计上传东西指定一个地址,老板也不希望在 app 上直传七牛云。
    yuzo555
        11
    yuzo555  
       229 天前   ❤️ 1
    10 Mbps 带宽只够一个用户以 1 MB/s 的上传视频,他上传的时候其他所有用户都歇菜。
    Dnlyao
        12
    Dnlyao  
    OP
       229 天前
    @wuxin987 我知道,现在希望看能不能不保存视频在本地,去上传七牛云。因为也不是一下能上传完到七牛云。
    StrangerA
        13
    StrangerA  
       229 天前   ❤️ 1
    ?后端签发 policy 然后前端带着 policy 去 oss 上传不是常规操作吗
    yuzo555
        14
    yuzo555  
       229 天前
    如果一定要对系统改动最小,可以考虑在存储服务商上搞一个 Serverless (或者云服务器),然后在上面接收上传的文件(或分片),在云上使用存储服务商的 SDK ,走内网传输到存储服务商即可。
    这个方案不太需要改动客户端,只要一般的 API 和客户端上传走不同的域名即可。
    Dnlyao
        15
    Dnlyao  
    OP
       229 天前
    @StrangerA 老板不希望在 app 写死一个方法是上传七牛云,而且是公司的七牛云。可能打算 app 也单独出售,给别人对接
    Dnlyao
        16
    Dnlyao  
    OP
       229 天前
    @yuzo555 感觉给出新方案。可能不太能实现,因为要钱
    yuzo555
        17
    yuzo555  
       229 天前
    @Dnlyao 那就用 S3 协议搞一套上传啊,兼容性很强,所有云存储服务商,包括自建对象存储都支持。
    Dnlyao
        18
    Dnlyao  
    OP
       229 天前
    @yuzo555 感谢 感谢,我去看看怎么弄
    jackge0323
        19
    jackge0323  
       229 天前
    程序里做分层不行吗?上传方法做个接口,用哪个上传就实现哪个呗。
    Huelse
        20
    Huelse  
       229 天前
    服务端返回上传 token ,客户端分片后直接上传到七牛云,一般是这么操作的。
    Dnlyao
        21
    Dnlyao  
    OP
       229 天前
    @Huelse
    @jackge0323
    我也是这么建议,老板不采用没办法。现在怕的是上传到云服务器,顶不住。本地方式的话,应该随便搞没什么太大问题。
    Huelse
        22
    Huelse  
       229 天前   ❤️ 1
    @Dnlyao #21 那也应该在获取 Token 时获取上传域名和路径,后续服务端改就行了啊,上传逻辑不变的。
    Ranhao
        23
    Ranhao  
       229 天前   ❤️ 1
    这种情况正常不是有个接口请求上传 token ,上传地址。
    客户端判断,如果是云上版本,就用直接传七牛,是本地版本,就直接传上传地址。
    Lamkin
        24
    Lamkin  
       229 天前   ❤️ 1
    @Dnlyao 本地服务器也部署一个对象存储的服务,比如 MINIO ,然后由签发上传地址的那个接口来做区分就好,设备保留原有的分片上传逻辑,接口签发 PUT 的地址是七牛就分配上传到七牛,签发的是 MINIO 就传到 minio 。
    orjdndn
        25
    orjdndn  
       229 天前   ❤️ 1
    可以试试 Cloudreve ,上传文件不保存到服务器
    xmumiffy
        26
    xmumiffy  
       229 天前 via Android   ❤️ 1
    七牛也支持分片啊,你收到一个分片就往七牛传一个
    https://developer.qiniu.com/kodo/6366/upload-part
    xxcheng
        27
    xxcheng  
       229 天前   ❤️ 1
    买台七牛云主机当上传服务器,然后内网互通,还可以用 S3FS 把对象存储挂载到主机。
    AsAsSaSa
        28
    AsAsSaSa  
       229 天前   ❤️ 1
    讲道理,哪怕算一下实际场景下这 10Mbps 小水管是什么个体验,一般生成的视频是多大,多久会产生一个需要上传的视频,一个视频需要上传多久,思路正常就不会考虑这样搞。
    没问题你就写个反代慢慢传呗。不想哪怕落一次盘那就用内存存着呗。
    zephyru
        29
    zephyru  
       228 天前   ❤️ 1
    不想在 App 写死,感觉最好还是,提供一个接口,返回 token 和上传地址,上传地址后端配置现在返回七牛云的,后续要换再换(别的七牛云或者本地上传地址),非要经过自己的服务器中转的确不是一个好法子。
    vueli
        30
    vueli  
       228 天前   ❤️ 1
    你就正常存到服务器,七牛设置一个回源策略就行了。
    guanzhangzhang
        31
    guanzhangzhang  
       228 天前   ❤️ 1
    回复都快 30 层了,没有一个人生产用过 sts token 吗,用户向后端申请上传 token ,你后端返回七牛云的 sts token ,安卓端直接上传七牛云,这是很标准的方案了🧐
    vueli
        32
    vueli  
       227 天前
    @guanzhangzhang #31 我就是这么干的。阿里云,官网都有实例,无脑复制就能搞定
    halobugTurbo
        33
    halobugTurbo  
       227 天前
    @guanzhangzhang 找到你了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5779 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:09 · PVG 14:09 · LAX 22:09 · JFK 01:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.