golang实现文件上传(高并发+分块+断点续传+加密)
运行视频
// todo 根据前端传递文件加密
func (s *FileProcess) FileProcessEncryptionByFront(file multipart.File, h *multipart.FileHeader) interface{} { //根据字节直接处理文件 这个是前端传递的二进制流s.FileProcessInit() //文件初始化 设置原来文件的缓冲区和加密缓冲区的字节大小s.SourceFile.SetSize(int(h.Size)) //设置原文件的总字节s.SourceFile.SetName(h.Filename) //设置原文件的名称s.EncryptFile.SetName(h.Filename) //设置加密文件后的名称filePath := s.EncryptFile.Namesave, _ := os.OpenFile(s.EncryptFile.Name, os.O_CREATE|os.O_RDWR, os.ModePerm) //打开加密文件fileBool, err := isExists(filePath)if fileBool && err == nil {fmt.Println("文件已经存在")} else {newfile, err := os.Create(filePath) //创建当前文件defer newfile.Close()if err != nil {fmt.Println("创建文件失败")}}s.SetNumberDncrypted(s.SourceFile) //设置原文件的携程数量 因为是根据原文件加密TODO block := head.Size / 5 //把数据分成五片 一般不建议这种方式 因为文件太大的话分的单位也会太大 使用这种方式 可以把一片大小理解成一个缓冲区var wg sync.WaitGroupfor i := 0; i < s.NumberCoroutine; i++ {wg.Add(1) //确保所有的文件合并}for i := 0; i < s.NumberCoroutine; i++ {// if i != 3 && i != 6 { //模拟网络中断导致某个数据库块没有上传go func(i int) {defer wg.Done()buf := make([]byte, s.SourceFile.BockByteNum) // 定义一个缓冲区,用于读取文件块数据offset := i * s.SourceFile.BockByteNumsave_offset := i * s.EncryptFile.BockByteNum //todo 这部要注意 当前加密保存后文件的一个偏移量bufSave := make([]byte, s.EncryptFile.BockByteNum) //加密保存文件的缓冲区不一样_, err := save.ReadAt(bufSave, int64(save_offset)) //判断当前的文件偏移量是否有数据if !(err != nil && err != io.EOF) { //如果没有数据n1, err1 := file.ReadAt(buf, int64(offset)) //读取原来上传文件的完整数据if err1 != nil && err1 != io.EOF {panic(err1.Error())}byte1, _ := tool.Encrypt(buf[:n1]) //字节加密_, err = save.WriteAt(byte1, int64(save_offset)) // 从偏移量处写入文件块数据////if i == 0 {// for i := 0; i < 10; i++ {// fmt.Println("上传前100个原文", buf[i])// }//}//if i == numThread-1 {// //fmt.Println("最终转换字节数量为", len(getByte), "")// for i := len(buf[:n1]) - 10; i < len(buf[:n1]); i++ {// fmt.Println("上传原文最后十个字节数量为", buf[i])// }}}(i)}wg.Wait()//设置加密文件的缓冲区return nil
}
相关文章:
golang实现文件上传(高并发+分块+断点续传+加密)
运行视频 // todo 根据前端传递文件加密 func (s *FileProcess) FileProcessEncryptionByFront(file multipart.File, h *multipart.FileHeader) interface{} { //根据字节直接处理文件 这个是前端传递的二进制流s.FileProcessInit() //文件初始化 设置原来文件…...
用HeidiSQL在MySQL中新建用户
用HeidiSQL登录到MySQL数据库,注意登录的时候要使用有权限的用户: 选择工具-》用户管理: 点击左上角的“添加”: 输入用户名、密码,并且分配权限: 点击右边的“添加对象”: 可以根据自己…...
【IPv6】IPv6协议
一、IPv6数据报格式 这是与v4报头的对比 1.8bit的版本保留了,v4版本就是4,v6就是6。 2.v6去除了v4的首部长度字段,因为v6的首部长是固定的40字节。 3.服务类型(Type of Service, ToS)和通信类型(Traffi…...
无需服务器,无需魔法,拥有一个微信机器人就是这么简单
前情提要 还没看过的朋友可以看一下上一篇文章《拥有一个微信机器人总共需要几步?》在这篇文章里,我们提到,创建微信机器人需要一个大前提--你得有一台服务器。现在,不再需要了!没错,上一篇提到的Serverles…...
1、命名空间、C++的复合类型、缺省参数
命名空间 1、命名空间的定义 使用namespace定义,使用作用域限定符::访问 #include <iostream> namespace ICBC{int money 0;void save( int m){money m;} } int main( void ){ICBC::save( 100); std::cout << "工行卡余额:"…...
colab notebook导出为PDF
目录 方法一:使用浏览器打印功能 方法二:使用nbconvert转换 方法三:在线转换 方法一:使用浏览器打印功能 一般快捷键是CTRLP 然后改变目标打印机为另存为PDF 这样就可以将notebook保存为PDF了 方法二:使用nbconver…...
【Python动漫系列】名侦探柯南(完整代码)
文章目录 名侦探柯南环境需求完整代码程序分析系列文章名侦探柯南 《名侦探柯南》是由青山刚昌创作的一部侦探漫画,于1994年开始连载,并被改编为动画、电影、游戏等多种形式。故事讲述了高中生侦探工藤新一在破案时被不良组织所毒害,身体缩小成了一个小学生,为了寻找解药并…...
【matlab】QR分解
QR分解 给定一个mn的矩阵A,其中m≥n,即矩阵A是高矩阵或者是方阵,QR分解将矩阵A分解为两个矩阵Q和R的乘积,其中矩阵Q是一个mn的各列正交的矩阵,即QTQI,矩阵R是一个nn的上三角矩阵,其对角线元素为…...
Liunx系统使用超详细(三)
本篇内容开始逐渐描述有关liunx的各种命令的使用方法! 目录 一、目录和文件区别 1.1目录: 1.2文件: 1.3总结: 二、Linux命令的写法 三、linux命令清屏 四、pwd命令 五、ls命令 5.1 ls: 5.2 ls -l:…...
Kubernetes学习笔记-Part.06 Docker安装
目录 Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退 第六章 Docker安装 在master、worker、harbor上均需…...
现在的00后,实在是太卷了......
现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家里条…...
Maven项目目录结构
项目结构 目录说明.ideaIDEA工具的配置文件.mvn用于运行Maven项目src源码文件夹target字节码文件夹.gitignore配置git忽略文件HELP.md自述文件mvnw运行Maven命令(Linux)mvnw.cmd运行Maven命令(Windows)pom.xml依赖管理文件 如图…...
感慨!一路从测试小白到现在的高级测试工程师,方向不对真的很艰辛
1 功能测试人员,也就是我们常常俗称的进行点点点测试工程师。前 1-2 年做功能测试,使用其他人开发的工具进行测试。这个阶段的测试工作都比较初级,严重依赖于别人开发的工具和系统。当系统进行升级换代的时候,强哥会明显的感觉到…...
字符串经典基础面试题
关卡名 字符串经典基础面试题 我会了✔️ 内容 1.理解字符串反转的处理方法 ✔️ 2.熟练掌握回文串的判断方法 ✔️ 3.掌握字符串中搜索第一个唯一字符的方法 ✔️ 4.掌握判断是否互为字符串重排的处理技巧 ✔️ 1 反转的问题 我们知道反转是链表的一个重要考点…...
【华为OD题库-062】计算礼品发放的最小分组数目-java
题目 又到了一年的末尾,项目组让小明负责新年晚会的小礼品发放工作。为使得参加晚会的同时所获得的小礼品价值相对平衡,需要把小礼品根据价格进行分组,但每组最多只能包括两件小礼品,并且每个分组的价格总和不能超过一个价格上限。…...
[go 面试] 构建高效微服务通信:选择合适的通信方式
关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 构建分布式系统或微服务架构时,服务间通信成为至关重要的一环。不同的通信方式各有优劣,因此在选择时需根…...
【华为OD题库-048】拔河比赛-java
题目 公司最近准备进行拔河比赛,需要在全部员工中进行挑选。选拔的规则如下: 1.按照身高优先、体重次优先的方式准备比赛阵容 2.规定参赛的队伍派出10名选手 请实现一个选拔队员的小程序。 输入为一个数组,记录了部门人员的身高、体重信息,如…...
【WebSocket】通信协议基于 node 的简单实践和心跳机制和断线重连的实现
前后端 WebSocket 连接 阮一峰大佬 WebSocket 技术博客 H5 中提供的 WebSocket 协议是基于 TCP 的全双工传输协议。它属于应用层协议,并复用 HTTP 的握手通道。它只需要一次握手就可以创建持久性的连接。 那么什么是全双工呢? 全双工是计算机网络中的…...
【有ISSN、ISBN号!往届均已完成EI检索】第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024)
第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024) 2024 3rd International Conference on Electronic Information Engineering, Big Data and Computer Technology 第三届电子信息工程、大数据与计算机技术国际学术会议(…...
【Windows】使用SeaFile搭建本地私有云盘并结合内网穿透实现远程访问
1. 前言 现在我们身边的只能设备越来越多,各种智能手机、平板、智能手表和数码相机充斥身边,需要存储的数据也越来越大,一张手机拍摄的照片都可能有十多M,电影和视频更是按G计算。而智能设备的存储空间也用的捉襟见肘。能存储大量…...
终极指南:如何快速解决Windows应用程序运行库缺失问题
终极指南:如何快速解决Windows应用程序运行库缺失问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…...
为什么Windows界面定制工具能让你找回高效工作节奏?
为什么Windows界面定制工具能让你找回高效工作节奏? 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 当我们习惯了多年的Windows操作…...
[MTCNN]2. 级联卷积神经网络样本工程与偏移量奥秘
1. 为什么样本工程是MTCNN成功的关键 在计算机视觉领域,数据质量往往比算法本身更重要。MTCNN作为经典的人脸检测算法,其成功很大程度上依赖于精心设计的样本工程。我曾在多个实际项目中验证过,同样的网络结构,使用不同质量的训练…...
如何快速集成KYGooeyMenu:iOS粘液菜单的完整实现指南
如何快速集成KYGooeyMenu:iOS粘液菜单的完整实现指南 【免费下载链接】KYGooeyMenu A not bad gooey effects menu. 项目地址: https://gitcode.com/gh_mirrors/ky/KYGooeyMenu KYGooeyMenu是一款为iOS应用打造的粘液效果菜单组件,能为你的应用添…...
3分钟掌握清华PPT模板:免费打造专业学术演示文稿的终极方案
3分钟掌握清华PPT模板:免费打造专业学术演示文稿的终极方案 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报、毕业答辩或重要演讲的PPT设计而头疼吗?清华大学视觉设计…...
天赐范式第37天:从手机端AI工具的疯狂质疑,到AI电脑端天赐范式的群策群力,为自身提供了源源不断的自驱动力
当3个AI客户端和一个人类(天赐范式),被自己的AI手机端说成是人类的共犯。 参与主体:手机端文心,手机端DEEPSEEK,文章DEEPSEEK(主理),豆包全场看戏。 摘要:手…...
Origin 9.1 保姆级教程:从数据归一化到论文级图表导出(附避坑指南)
Origin 9.1 科研数据处理与图表输出全流程实战指南 科研数据的可视化呈现是论文写作中不可或缺的一环。作为一款功能强大的科学绘图软件,Origin 9.1在学术界有着广泛的应用。本文将系统性地介绍从数据预处理到高质量图表导出的完整工作流程,特别针对科研…...
英雄联盟免费专业录像编辑器:League Director完整使用终极指南
英雄联盟免费专业录像编辑器:League Director完整使用终极指南 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedirector …...
PyTorch转ONNX时,如何正确设置动态输入尺寸(以RetinaFace多输出为例)
PyTorch转ONNX时动态输入尺寸的精准配置实战:以RetinaFace多输出为例 在模型部署的实际工程中,PyTorch到ONNX的转换常常会遇到动态输入尺寸的挑战,特别是当模型具有多个输出时(如RetinaFace同时输出边界框、关键点和置信度&#x…...
5分钟上手Efficient-KAN:高效Kolmogorov-Arnold网络实战指南
5分钟上手Efficient-KAN:高效Kolmogorov-Arnold网络实战指南 【免费下载链接】efficient-kan An efficient pure-PyTorch implementation of Kolmogorov-Arnold Network (KAN). 项目地址: https://gitcode.com/GitHub_Trending/ef/efficient-kan 还在为传统神…...
