gpt4 book ai didi

delphi - 用Delphi将大文件转换为base64

转载 作者:行者123 更新时间:2023-12-03 15:44:43 26 4
gpt4 key购买 nike

我需要将文件从 480mb 转换为 base64,但我不能。我总是收到内存不足的消息。有人有什么建议吗?

function TFormService.LoadFileToBase64(const AFileName: string): String;
var
// stream: TMemoryStream;
Encoder: TIdEncoderMIME;
Base64String: String;
LStream: TMemoryStream;
begin
Encoder := TIdEncoderMIME.Create;
LStream := TMemoryStream.Create;
try
LStream.LoadFromFile(AFileName);
Base64String := Encoder.Encode(LStream);
finally
FreeAndNil(Encoder);
FreeAndNil(LStream);
end; // try finally


// stream := TMemoryStream.Create;
// try
// stream.LoadFromFile(AFilename);
// result := EncodeBase64(stream.Memory, stream.Size);
// finally
// stream.Free;
// end;
end;

最佳答案

您不应将整个 Base64 字符串保存在内存中。 480 MB 编码为 Base64 将产生约 640 M 字符,占用约 1.28 GB 内存。这在 32 位应用程序中肯定会失败。

最好将编码字符串写入文件并使用适当的编码器。最近的 Delphi 版本有 System.NetEncoding 来实现这一点:

procedure ConvertFileToBase64(const AInFileName, AOutFileName: string);
var
inStream: TStream;
outStream: TStream;
begin
inStream := TFileStream.Create(AInFileName, fmOpenRead);
try
outStream := TFileStream.Create(AOutFileName, fmCreate);
try
TNetEncoding.Base64.Encode(inStream, outStream);
finally
outStream.Free;
end;
finally
inStream.Free;
end;
end;

关于delphi - 用Delphi将大文件转换为base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com