【发布时间】:2019-07-07 08:45:45
【问题描述】:
我们已终止与 Saas 工具的合同。我们收到了作为 Oracle 数据库的存档数据,其中 Blob 列中包含 word 和 pdf 文档。我们被告知 Blob 数据是 Base64 二进制文件,需要在下载到文件之前进行解码。查看 Blob 列中的数据时,它看起来像这样:
í]pÅ™þgµ«•,´–‘°
8„I–
c#Y’-Ù²ül‡àF»#íˆÝõήŒHRˆ@! qsG\¹‹I ¹ÜåçQ<ª #G.<'Áªâ«
÷È«øB‘J¼÷ýÝ3»#iW–d‡×Í/}ÛÓÓÝÿß÷ßwïÎãðç½ç›ÿƒ&ÐZ*£¹J*wS€
N$LÔmŸ;‘ËåøÔz çÑÛŠ~wß÷èüë*ýDÇêÍ÷,ßÐ@TCÃÃ÷ÔßS?ÑBˆ*ý
Ô|Ñã7I4ÔLÎã¦\®ö¤ÇÝ+>U?
同hexdump:
00000000 1f 8b 08 00 00 00 00 00 00 00 ed 5d 0b 70 1c c5 |...........].p..|
00000010 99 fe 67 b5 ab 95 2c ad b4 96 91 b0 8d 0d 03 38 |..g...,........8|
00000020 84 18 49 96 0d 06 63 07 23 59 92 2d d9 b2 fc 90 |..I...c.#Y.-....|
00000030 6c 87 e0 03 46 bb 23 ed 88 dd 9d f5 ce ae 8c 48 |l...F.#........H|
00000040 52 88 40 02 21 09 71 12 73 47 5c b9 8b 49 20 b9 |R.@.!.q.sG\..I .|
00000050 dc e5 12 e7 51 3c aa 20 90 23 47 2e 3c 12 27 c1 |....Q<. .#G.<.'.|
已尝试在 PL/SQl、Java、Linux 中使用 Base64 库进行解码,但无法正常工作。
Java:
byte[] decoded = Base64.decodeBase64(Files.readAllBytes(Paths.get(fileName)));
byte[] decodedBytes = Base64.decodeBase64(input_file);
PL/SQL:
utl_file.put(l_output, utl_raw.cast_to_varchar2(vblob));
utl_file.putl_output, utl_raw.cast_to_varchar2(utl_encode.base64_decode(vblob)));
raw_decoded := utl_encode.base64_decode(vblob);
utl_file.put_raw(l_output, utl_raw.cast_to_varchar2(raw_decoded));
您能否告知这是 Base64 数据还是它采用什么格式?预期结果是在 MS Word、PDF 文档中呈现 blob。
【问题讨论】:
-
不,这根本不像 Base64。在 Linux 上尝试
base64 somefile以查看真实示例。您是否尝试过使用例如识别数据?file blob_example_file在 Linux 上? -
是的,也尝试过 linux 库(Base64 命令)。过去曾致力于将 Base64 图像转换为 jpg。有点熟悉 Base64 流。发布以确认这不是 Base64 并查看是否有人知道这是什么格式。感谢您的回复和建议。
-
顺便说一句:添加示例的 hexdump 可能会有所帮助。我很确定您现在拥有的字符串的复制和粘贴不会是透明的。选项将是
od(coreutils) 或hexdump(util-linux) 工具。 -
这看起来可能是 Word 的二进制专有文件格式 - 如果您在文本编辑器中打开 .doc ( *not docx) 文件会看到什么。如果是这种情况,理论上将内容写入文本文件,然后使用扩展名
.doc保存它是可行的。但这并不确定,只是我会尝试的事情...... -
@Stefan hexdump 正在生产(前几行) 00000000 1f 8b 08 00 00 00 00 00 00 00 ed 5d 0b 70 1c c5 |...........].p ..| 00000010 99 fe 67 b5 ab 95 2c ad b4 96 91 b0 8d 0d 03 38 |..g....,........8| 00000020 84 18 49 96 0d 06 63 07 23 59 92 2d d9 b2 fc 90 |..I....c.#Y.-....| 00000030 6c 87 e0 03 46 bb 23 ed 88 dd 9d f5 ce ae 8c 48 |l...F.#........H| 00000040 52 88 40 02 21 09 71 12 73 47 5c b9 8b 49 20 b9 |R.@.!.q.sG\..I.| 00000050 直流 e5 12 e7 51 3c aa 20 90 23 47 2e 3c 12 27 c1 |....Q<. .>