接受视频文件,不保存文件在服务器,上传七牛云。该怎么实现。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Dnlyao
V2EX    Node.js

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

  •  
  •   Dnlyao 2024-05-11 15:47:42 +08:00 3010 次点击
    这是一个创建于 516 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    33 条回复    2024-05-13 15:35:22 +08:00
    imdong
        1
    imdong  
       2024-05-11 15:50:37 +08:00 via iPhone
    呃,直接传七牛是有什么问题么?我记得可以直接传的来着?
    Dolov
        2
    Dolov  
       2024-05-11 15:50:59 +08:00
    我以前在 web 端用过七牛的 sdk 直接把文件分片上传到七牛云,不需要经过自己的服务器
    chunriyeqiukong
        3
    chunriyeqiukong  
       2024-05-11 15:51:24 +08:00
    为什么不直接在端上传到七牛
    Dnlyao
        4
    Dnlyao  
    OP
       2024-05-11 15:52:31 +08:00
    @Dolov 我也想这样,但老板不想。希望可以文件经过服务器。因为项目型会改动成本地系统,那时候视频就保存本地系统。
    crownor
        5
    crownor  
       2024-05-11 15:55:27 +08:00
    那你用个开源支持 OSS 的网络文件系统去作为中间件就好了嘛,这样的话想用哪种都可以,对于你后端来说都是那个文件系统的接口,实现了存储方式的透明化
    yuzo555
        6
    yuzo555  
       2024-05-11 15:58:11 +08:00
    服务器是 Gbps 级别带宽,并且不限流量的?如果是这种情况可以考虑。
    Dolov
        7
    Dolov  
       2024-05-11 15:58:38 +08:00   1
    @Dnlyao 我们的 web 系统分为云上版本和本地部署版本,用环境变量区分,如果是云上则直传七牛,如果是 op 就存储在服务器。老板知道文件多的话服务器压力很大么 ~
    Dnlyao
        8
    Dnlyao  
    OP
       2024-05-11 16:02:08 +08:00
    @yuzo555 不是,10m 小水管,所以我想着安卓请求上来分片的,直接上传七牛云,不留云服务器。
    wuxin987
        9
    wuxin987  
       2024-05-11 16:04:16 +08:00
    node 后端上传到七牛云之后把本地文件删除不就完了
    Dnlyao
        10
    Dnlyao  
    OP
       2024-05-11 16:05:45 +08:00
    @Dolov 相同的设计方法,通过变量控制。如果本地服务器就不太需要管。但是云服务器的,还有其他东西在跑。看能不能不存储。昨天已经去跟他说了,老板去找人问,别人回复他即使 app 设计上传东西指定一个地址,老板也不希望在 app 上直传七牛云。
    yuzo555
        11
    yuzo555  
       2024-05-11 16:06:16 +08:00   1
    10 Mbps 带宽只够一个用户以 1 MB/s 的上传视频,他上传的时候其他所有用户都歇菜。
    Dnlyao
        12
    Dnlyao  
    OP
       2024-05-11 16:07:11 +08:00
    @wuxin987 我知道,现在希望看能不能不保存视频在本地,去上传七牛云。因为也不是一下能上传完到七牛云。
    StrangerA
        13
    StrangerA  
       2024-05-11 16:07:25 +08:00   1
    ?后端签发 policy 然后前端带着 policy 去 oss 上传不是常规操作吗
    yuzo555
        14
    yuzo555  
       2024-05-11 16:09:57 +08:00
    如果一定要对系统改动最小,可以考虑在存储服务商上搞一个 Serverless (或者云服务器),然后在上面接收上传的文件(或分片),在云上使用存储服务商的 SDK ,走内网传输到存储服务商即可。
    这个方案不太需要改动客户端,只要一般的 API 和客户端上传走不同的域名即可。
    Dnlyao
        15
    Dnlyao  
    OP
       2024-05-11 16:10:47 +08:00
    @StrangerA 老板不希望在 app 写死一个方法是上传七牛云,而且是公司的七牛云。可能打算 app 也单独出售,给别人对接
    Dnlyao
        16
    Dnlyao  
    OP
       2024-05-11 16:12:11 +08:00
    @yuzo555 感觉给出新方案。可能不太能实现,因为要钱
    yuzo555
        17
    yuzo555  
       2024-05-11 16:13:07 +08:00
    @Dnlyao 那就用 S3 协议搞一套上传啊,兼容性很强,所有云存储服务商,包括自建对象存储都支持。
    Dnlyao
        18
    Dnlyao  
    OP
       2024-05-11 16:15:38 +08:00
    @yuzo555 感谢 感谢,我去看看怎么弄
    jackge0323
        19
    jackge0323  
       2024-05-11 16:21:02 +08:00
    程序里做分层不行吗?上传方法做个接口,用哪个上传就实现哪个呗。
    Huelse
        20
    Huelse  
       2024-05-11 16:21:35 +08:00
    服务端返回上传 token ,客户端分片后直接上传到七牛云,一般是这么操作的。
    Dnlyao
        21
    Dnlyao  
    OP
       2024-05-11 16:24:46 +08:00
    @Huelse
    @jackge0323
    我也是这么建议,老板不采用没办法。现在怕的是上传到云服务器,顶不住。本地方式的话,应该随便搞没什么太大问题。
    Huelse
        22
    Huelse  
       2024-05-11 16:28:50 +08:00   1
    @Dnlyao #21 那也应该在获取 Token 时获取上传域名和路径,后续服务端改就行了啊,上传逻辑不变的。
    Ranhao
        23
    Ranhao  
       2024-05-11 16:29:37 +08:00   1
    这种情况正常不是有个接口请求上传 token ,上传地址。
    客户端判断,如果是云上版本,就用直接传七牛,是本地版本,就直接传上传地址。
    Lamkin
        24
    Lamkin  
       2024-05-11 16:41:49 +08:00   1
    @Dnlyao 本地服务器也部署一个对象存储的服务,比如 MINIO ,然后由签发上传地址的那个接口来做区分就好,设备保留原有的分片上传逻辑,接口签发 PUT 的地址是七牛就分配上传到七牛,签发的是 MINIO 就传到 minio 。
    orjdndn
        25
    orjdndn  
       2024-05-11 16:46:55 +08:00   1
    可以试试 Cloudreve ,上传文件不保存到服务器
    106npo
        26
    106npo  
       2024-05-11 17:01:04 +08:00 via Android   1
    七牛也支持分片啊,你收到一个分片就往七牛传一个
    https://developer.qiniu.com/kodo/6366/upload-part
    xxcheng
        27
    xxcheng  
       2024-05-11 17:02:16 +08:00   1
    买台七牛云主机当上传服务器,然后内网互通,还可以用 S3FS 把对象存储挂载到主机。
    AsAsSaSa
        28
    AsAsSaSa  
       2024-05-12 00:46:06 +08:00   1
    讲道理,哪怕算一下实际场景下这 10Mbps 小水管是什么个体验,一般生成的视频是多大,多久会产生一个需要上传的视频,一个视频需要上传多久,思路正常就不会考虑这样搞。
    没问题你就写个反代慢慢传呗。不想哪怕落一次盘那就用内存存着呗。
    zephyru
        29
    zephyru  
       2024-05-13 10:41:20 +08:00   1
    不想在 App 写死,感觉最好还是,提供一个接口,返回 token 和上传地址,上传地址后端配置现在返回七牛云的,后续要换再换(别的七牛云或者本地上传地址),非要经过自己的服务器中转的确不是一个好法子。
    vueli
        30
    vueli  
       2024-05-13 11:01:37 +08:00   1
    你就正常存到服务器,七牛设置一个回源策略就行了。
    guanzhangzhang
        31
    guanzhangzhang  
       2024-05-13 12:25:45 +08:00   1
    回复都快 30 层了,没有一个人生产用过 sts token 吗,用户向后端申请上传 token ,你后端返回七牛云的 sts token ,安卓端直接上传七牛云,这是很标准的方案了
    vueli
        32
    vueli  
       2024-05-13 14:11:04 +08:00
    @guanzhangzhang #31 我就是这么干的。阿里云,官网都有实例,无脑复制就能搞定
    halobugTurbo
        33
    halobugTurbo  
       2024-05-13 15:35:22 +08:00
    @guanzhangzhang 找到你了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3983 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:10 PVG 12:10 LAX 21:10 JFK 00:10
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86