码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 全网最简单的大文件上传与下载代码实现(React+Go)


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁) 知识定位 人群定位
    🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    前言

    前段时间我需要实现大文件上传的需求,在网上查找了很多资料,并且也发现已经有很多优秀的博客讲了大文件上传下载这个功能。

    我的项目是个比较简单的项目,并没有采用特别复杂的实现方式,所以我这篇文章的目的主要是讲如何最简单地实现大文件上传与下载这个功能,不会讲太多原理之类的东西。

    大文件上传

    在实际场景中,上传大文件主要会遇到的问题有:

    • 体积大/网络不好时,上传时间会非常久
    • 前端/后端某处设置了最大请求时长/最大读写时长等,造成文件上传超时
    • Nginx/后端某处对请求大小进行了限制,造成文件因体积过大而上传失败
    • 上传失败后,需要重新开始上传

    实现思路

    业界最普遍的方案就是切片上传,简单地说就是把文件切割成若干个小文件,再将小文件们传输到后端,最后按照顺序把小文件们重新拼成这个大文件。

    所以具体的实现逻辑如下:

    1. 把大文件进行切片,对切片的文件内容进行加密生成一个标识串,用于标识唯一的切片
    2. 服务端在临时目录里保存各段文件
    3. 浏览器端所有分片上传完成,发送给服务端一个合并文件的请求
    4. 服务端根据分片顺序进行文件合并
    5. 删除分片文件

    也有其他合并文件的方式,本文不做讨论,详情可以参考如何做大文件上传。

    具体实现

    前端部分

    前端需要做的部分是:

    • 把大文件进行切片,对切片的文件内容进行加密生成一个标识串
    • 上传所有切片,最后发送合并文件的请求

    在这里我使用了一个开源库react-chunk-upload,它提供了加密文件函数和获取文件的相应切片内容的函数(如图),这就不用我自己写啦(偷懒小技巧)。

  • 相关阅读:
    使用container_of宏进行类型转换
    解密一致性哈希算法:实现高可用和负载均衡的秘诀
    【C++】list 模拟实现
    代码随想录算法训练营第四十六天 | 139.单词拆分 & 关于多重背包,你该了解这些! & 背包问题总结篇!
    (四)动态阈值分割
    【Java集合框架】23 ——TreeMap 类
    手把手教你在windows上安装mysql8.0最新版本数据库,保姆级教学
    环信web、uniapp、微信小程序SDK报错详解---登录篇
    react antd实现upload上传文件前form校验,同时请求带data
    PyTorch的生态和模型部署
  • 原文地址:https://blog.csdn.net/qq_43479892/article/details/126736961
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号