[quote=引用 7 楼 wow818wow 的回复:] [quote=引用 6 楼 u013641057 的回复:] [quote=引用 5 楼 mlqxj35674 的回复:] 这个容易啊,既然传输和分包,你肯定知道原始文件的大小的包的大小,因此你可以在服务器端建立一个内存文件,其大小和原始文件相等,当几号包到达时,写到指定位置即可,这其中可能会涉及争夺资源问题,需要锁之类东西。指定写入位置时,可以通过Seek,具体位置可以通过包编号*包大小而得到。
现在在做一个WebSocket的C#端文件处理的服务器,页面上传文件后分包发送到文件应用服务器做处理,然后把文件包异步保存到本地,现在的思路是首先客户端分包标每个包的序号通过WebSocket传送到文件服务器,然后文件服务器在服务器端创建临时文件,将传来的文件包异步保存到临时文件中,现在问题是不晓得怎么给临时文件排发来的包的顺序,如果异步先发来七号包八号包这类的,然后前面的包还空着,怎么写入临时文件并且前面一到六号包全都占位等待写入,具体文件操作代码实在找不到办法,如果有前辈有什么其他思路的话求教
using(var fs = File.OpenWrite(file)) { fs.Position = postion; fs.Write(data, 0, data.Length); }
[quote=引用 6 楼 u013641057 的回复:] [quote=引用 5 楼 mlqxj35674 的回复:] 这个容易啊,既然传输和分包,你肯定知道原始文件的大小的包的大小,因此你可以在服务器端建立一个内存文件,其大小和原始文件相等,当几号包到达时,写到指定位置即可,这其中可能会涉及争夺资源问题,需要锁之类东西。指定写入位置时,可以通过Seek,具体位置可以通过包编号*包大小而得到。
[quote=引用 5 楼 mlqxj35674 的回复:] 这个容易啊,既然传输和分包,你肯定知道原始文件的大小的包的大小,因此你可以在服务器端建立一个内存文件,其大小和原始文件相等,当几号包到达时,写到指定位置即可,这其中可能会涉及争夺资源问题,需要锁之类东西。指定写入位置时,可以通过Seek,具体位置可以通过包编号*包大小而得到。
这个容易啊,既然传输和分包,你肯定知道原始文件的大小的包的大小,因此你可以在服务器端建立一个内存文件,其大小和原始文件相等,当几号包到达时,写到指定位置即可,这其中可能会涉及争夺资源问题,需要锁之类东西。指定写入位置时,可以通过Seek,具体位置可以通过包编号*包大小而得到。
能否都接到数据再写入文件呢或者如果知道每块的大小,可以预留位置 如果都不知道,是否可以在每段开头保留标示,读取时,不要显示这个标识内容
110,571
社区成员
642,568
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧