【发布时间】:2019-05-07 13:21:01
【问题描述】:
服务器有将近 50 GB 的压缩文件。我需要一种最佳方法来从这些压缩文件夹中提取文件,并对它们进行 base 64 编码并将它们作为 blob 保存到数据库中。如果可能,我不希望提取整个压缩文件夹。 请指导我。
【问题讨论】:
-
查看 ZipArchive 文档中给出的(第二个)示例:docs.microsoft.com/en-us/dotnet/api/…。但是不要让 Zip 文件条目的(未压缩)流被写入文件(如示例那样),只需 take the stream object of the uncompressed ZIP entry 并随心所欲地处理它(如从中读取,将其交给 base64 编码器您的选择,挑战它参加饮酒比赛等...)
-
请注意,从技术上讲,您最终必须解压缩数据 - 除非您想将压缩内容存储在数据库中。但是,您可以按照@elgonzo 的建议“在内存中”执行此操作,因此不会产生首先将文件写入磁盘的开销,然后您无论如何都会重新读取。
-
我会试着让你知道我是否卡住了。谢谢。
-
您所要求的实际上是三个离散操作的组合:将压缩文件提取到内存、base64 编码流/数组以及将 base64 字符串保存到数据库。您是否查看过与这些单独操作相关的现有问题?您尝试实施了哪些操作,您遇到了哪些问题?您是否有足够的 RAM 来存储压缩存档中最大文件大小的 233%(二进制文件 + base64 文件 + base64 开销)?此外,如果您能指出您正在使用的数据库,将会很有帮助。
-
我被困在其他任务中。我还没有开始这个。我正在使用 MS Sql Db。我愿意接受任何建议。我从来没有处理过这样的任务。