Эта функция использует строчную кодировку base64, декодирует ее и записывает полученный массив байтов в файл.
procedure DecodeToFile(const base64: AnsiString; const FileName: string);
var
stream: TFileStream;
bytes: TBytes;
begin
bytes := DecodeBase64(base64);
stream := TFileStream.Create(FileName, fmCreate);
try
if bytes<>nil then
stream.Write(bytes[0], Length(Bytes));
finally
stream.Free;
end;
end;
Чтобы объяснить, что здесь происходит, первую линию
bytes := DecodeBase64(base64);
выполняет декодирование и возвращает декодированное двоичное содержимое файла в TBytes
переменном. TBytes
- это просто массив байтов.
Следующим шагом является создание файла. Идиоматическим способом записи файлов в Delphi является использование потоков. В этом случае мы хотим получить номер TFileStream
.
stream := TFileStream.Create(FileName, fmCreate);
fmCreate
опция означает, что, если файл уже существует, он будет заменен и переписан, что мы пишем.
Заключительный шаг, чтобы записать содержимое массива байт в файл
if bytes<>nil then
stream.Write(bytes[0], Length(Bytes));
if bytes<>nil
проверки обрабатывать случай, когда base64 строка декодирует пустой массив. Если бы мы удалили эту проверку, следующая строка привела бы к ошибке во время выполнения, если бы вы работали с включенным контролем диапазона (что вы должны делать). Призыв к stream.Write
должен быть понятным.
В принятом ответе, он говорит о 'функции DecodeBase64'. Вы посмотрели на него? Если да, то как далеко вы добрались, и с какими проблемами вы столкнулись? –
Да, я ищу его точно, но я не знаю, как его использовать. Можете ли вы написать функцию, как в принятом ответе, для восстановления этого файла из кодированного base64 и записи его на диск? – user1135768
Опять же, что вы пробовали, как далеко у вас? Вы не сможете многому научиться, просто используя код ложки. –