使用 Delphi 2007 将 Base64 字符串作为二进制文件保存到磁盘

2023-12-14

我有一个 Base64 二进制字符串,它是由第 3 方供应商发送给我们的 XML 文档的一部分,我希望能够将其保存回其原始文件格式 (jpg)。

使用此问题中接受的答案“使用 php 将 Base64 字符串作为二进制文件保存到磁盘”我可以轻松地将字符串保存为 jpg,因此我知道该字符串格式良好并且是 JPG 文件。

但是我该如何在 Delphi 2007 中执行此操作呢?

在网上我找到了一个关于如何将 Base64 转换为 TByteDynArray 并保存的教程,但它不能正常工作。我也玩过 Indy 的 IdDecoderMIME,但没有成功。

有谁知道如何做到这一点,或者我应该去哪里寻找?


OmniXMLUtils.pas 来自OmniXML项目包含以下功能:

function  Base64Decode(encoded, decoded: TStream): boolean; overload;
function  Base64Decode(const encoded: string; decoded: TStream): boolean; overload;
function  Base64Decode(const encoded: string; var decoded: string): boolean; overload;
function  Base64Decode(const encoded: string): string; overload;
procedure Base64Encode(decoded, encoded: TStream); overload;
procedure Base64Encode(decoded: TStream; var encoded: string); overload;
function  Base64Encode(decoded: TStream): string; overload;
function  Base64Encode(const decoded: string): string; overload;
procedure Base64Encode(const decoded: string; var encoded: string); overload;

Base64Decode(string, TStream) 应该可以解决问题。对于 TStream 参数,您可以将其传递给 TFileStream,如下所示:

procedure SaveBase64ToFile(const encoded, fileName: string);
var
  fs: TFileStream;
begin
  fs := TFileStream.Create(fileName, fmCreate);
  try
    if not Base64Decode(encoded, fs) then
      raise Exception.Create('Invalid data!');
  finally FreeAndNil(fs); end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Delphi 2007 将 Base64 字符串作为二进制文件保存到磁盘 的相关文章

随机推荐

  • 如何知道thrust::partition_copy的结果中有多少个元素

    我正在尝试使用推力库的partition copy函数对数组进行分区 我见过传递指针的示例 但我需要知道每个分区中有多少个元素 我尝试的是将设备向量作为 OutputIterator 参数传递 如下所示 include
  • Kafka 服务器不返回任何内容

    Zookeeper 已在 Windows 环境中启动并运行 现在 当我使用以下命令启动 Kafka 服务器时 bin windows kafka server start bat config server properties 没有显示任
  • 编写 Hyperledger Fabric Chaincode 时应遵循的最佳实践

    为了避免错误并编写高效的 Hyperledger Fabric Chaincode 应该遵循哪些最佳实践 编写 Hyperledger Fabric 链码的一般指南 有关详细说明 请参阅以下链接 https gist github com
  • Mockito - 奇怪的包范围类继承问题

    发现非常有趣的问题 并在调试后找到了重现它的场景 因此 如果我有一个包范围 B 的类 该类具有一些公共方法和扩展它的公共类 A package somepackage class B public void someMethod throw
  • 多处理 AttributeError 模块对象没有属性“__path__”

    我有一个很长的脚本 最后需要对庞大列表的所有项目运行一个函数 这需要很长时间 例如考虑 input a 1 2 3 4 a lengthy computation on some data print test 1 for testing
  • 如何使用Python字典? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我发现在 python 中迭代字典很困难 我已经通过 CodeAcademy 完成了学习并独立学习 但仍然觉得翻字典很困难 除了 Python 官方
  • java.io.IOException:参数无效

    我有一个带有负载均衡器的以集群模式运行的 Web 应用程序 它由两个 Tomcat T1 和 T2 组成 仅寻址一个 DB T2 通过 nfs 安装到 T1 这是两个节点之间唯一的差异 我有一个生成一些文件的java方法 如果请求 在 T1
  • 无法设置音量,音量控制未转发到系统

    我尝试使用安卓MediaPlayer框架来发挥mp3 file 看到这个问题 在我设法使其工作后 我很快意识到 音量增大 减小事件被类捕获javafxports android KeyEventProcessor并且永远不会被转发 我试图规
  • 计算特定撞击角度的 box2d 冲量

    我有一个球 圆形的动态物体 它在重力条件下作用在表面 蹦床 上 当球撞击蹦床 图中从 A 点到 B 点绘制 时 我想向球施加一个脉冲 垂直于蹦床表面 问题是现在我使用 b2Vec2 impulse b2Vec2 0 self fullMas
  • Google 地图 API + Google 地图引擎/我的地图

    我已经使用 Google 地图引擎将带有图层和形状的自定义地图嵌入到我的网页中 但它即将停止使用 替代品是 Google 我的地图 它很轻量 但似乎可以满足我的需求 现在回答我的问题 我正在使用 Google 地图 API 在我的网页上显示
  • 检测文档就绪时自动填充的值

    我有一个登录页面 我试图在其中切换按钮的显示以允许用户修改其角色 从用户的可用角色列表中选择 我最初隐藏按钮并显示它 txtUsername blur 我的问题 有没有办法获取 Chrome 自动填充值 如果我尝试在文档准备好时触发它 则该
  • 从应用程序资源保存到 SD 卡的图像编号

    我的应用程序由天列表视图组成 每天都有其特定的图像放置在无限的图库类中 我想做的是 将具有序列号的图像从应用程序可绘制资源 无限图库类 保存到 SD 卡 我试图获取保存图像的顺序号 如下所示 第一张图片 Image 1 png 第二张图片
  • 键入 ruby​​ 新哈希值

    Ruby 1 9 2 的新哈希语法有一个奇怪的问题 在 1 9 2 中如何将任何对象作为哈希中的键 在 1 8 7 哈希中它的工作原理 a b a gt some a gt another value a gt 3rd value 但在 1
  • 使用 sklearn RandomizedPCA 处理稀疏矩阵和稠密矩阵时的不同结果

    当我得到不同的结果时Randomized PCA稀疏矩阵和稠密矩阵 import numpy as np import scipy sparse as scsp from sklearn decomposition import Rando
  • 删除所有属性

    是否可以使用 jQuery 一次删除所有属性 img src example jpg width 100 height 100 to img I tried img removeAttr 没有运气 任何人 一个不需要 JQuery 的简单方
  • 创建过多 AVPlayer 实例时出现 AVPlayerItemStatusFailed 错误

    我正在开发一个 iOS 应用程序 它创建用户池提交的所有视频的提要 使用户能够浏览和查看其他人创建的视频 正如您可以想象的那样 我需要能够支持 feed 中任意数量的视频 目前 我正在为每个视频创建并保留一个 AVPlayer 实例 如下所
  • 安装 debug_inspector (0.0.2) 时出错,Bundler 无法继续

    将我的 Rails 应用程序从 3 2 迁移到 4 0 0 并将 ruby 2 2 2 迁移到 2 2 4 在进行捆绑安装时遇到 安装 debug inspector 0 0 2 时发生错误 并且 Bundler 无法继续 问题 使用 ub
  • 自定义ListCellRenderer不会改变背景颜色

    我有这门课 SuppressWarnings serial private class DataCellRenderer extends JLabel implements ListCellRenderer public DataCellR
  • 为什么 String.intern() 在 Oracle JDK 1.7 中的行为不同?

    这是一个java片段 public class TestIntern public static void main String argvs String s1 new StringBuilder ja append va toStrin
  • 使用 Delphi 2007 将 Base64 字符串作为二进制文件保存到磁盘

    我有一个 Base64 二进制字符串 它是由第 3 方供应商发送给我们的 XML 文档的一部分 我希望能够将其保存回其原始文件格式 jpg 使用此问题中接受的答案 使用 php 将 Base64 字符串作为二进制文件保存到磁盘 我可以轻松地