从浏览器上传后对存储在数据库中的二进制文件进行解码

2024-04-26 10:51:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在从一个将文件存储在数据库中的CMS迁移到一个将文件存储在aws3中的系统中时,除了从Java(旧系统)中逆向工程格式并使用python从头开始实现它之外,我似乎找不到任何选择,使用Java代码或rfc1867作为参考。在

我有包含长串编码文件的数据库转储。 我不是百分之百的清楚哪个二进制文件上传编码被使用。但是每种文件类型的前几个字符之间是一致的。在

  • UEsDBBQA是大量DOCX文件格式中的前8个字符,UEsDBBQABgAIAAAA是超过75%的DOCX文件中的前16个字符。在
  • JVBERi0xLj是许多PDF文件的前10个字符。在

每个允许文件上传的web应用程序框架都必须对这些文件进行解码。。。所以这是一个已知的问题。但是我找不到用Python(我选择的语言)或某种命令行解码工具来解码这些字符串。。。在

file无法识别它们。在

hachoir无法识别它们。在

有什么简单的工具我可以直接安装,我不在乎它们是用C,Perl,Python,Ruby,JavaScript还是Mabolge,我只想要一个工具,它可以把编码的字符串作为输入(file,stdin,我不在乎),并输出解码后的原始文件。在

或者我是不是过度考虑了解码这些文件的算法,结果会比看上去简单,有人能告诉我如何使用纯python解码它们?在


Tags: 文件工具字符串数据库编码cms系统工程
1条回答
网友
1楼 · 发布于 2024-04-26 10:51:06

将二进制数据表示为文本的最常用的编码算法是Base64。我刚刚用Java对一个PDF文件做了一个快速测试,在Base64编码时得到了完全相同的头字符序列。在

byte[] bytes = Files.readAllBytes(Paths.get("/test/test.pdf"));
String base64 = DatatypeConverter.printBase64Binary(bytes);
System.out.println(base64.substring(0, 10)); // JVBERi0xLj

所以,你很可能在寻找一个Base64解码器。在

我不做Python,这里有一个Google search suggestion和迄今为止在搜索结果中出现的第一个堆栈溢出链接:Python base64 data decode。在

相关问题 更多 >