0

我们在 C# 中创建了控制台应用程序,它将读取多页 tif/tiff 文件,分页然后转换为 base64 编码以将文件上传到其他目标应用程序(因为它只接受 base64 编码来上传文档),我们是每当文件大小超过 500 MB 时,就会出现此内存不足异常 引发“System.OutOfMemoryException”类型的异常

Exception at System.Convert.ToBase64String(Byte[] inArray, Int32 offset, Int32 length, Base64FormattingOptions options)
   at System.Convert.ToBase64String(Byte[] inArray)

代码片段:

Byte[] bytes = File.ReadAllBytes(filepath);
String base64stringofdocument = Convert.ToBase64String(bytes);

上面的文件路径是指>文件的绝对路径

4

1 回答 1

2

使用字符串会产生开销。对于非常大量的数据,最好使用数组或流。在这种情况下,您可以首先重写代码以使用Convert.ToBase64CharArray. 所以你的代码会变成这样:

Byte[] bytes = File.ReadAllBytes(filePath);
// Compute the number of Base64 converted characters required (must be divisible by 4)
long charsRequired = (long)((4.0d/3.0d) * bytes.Length);
if (charsRequired % 4 != 0) {
    charsRequired += 4 - charsRequired % 4;
}
// Allocate buffer for characters, and write converted data into the array
Char[] chars = new Char[charsRequired];
Convert.ToBase64CharArray(bytes, 0, bytes.Length, chars, 0);

然后您可以将chars数组上传到您的目标应用程序。

于 2020-08-07T14:33:45.057 回答