我的Python代码打开了一些WAV文件,并将它们放入base64编码的字符串中,然后通过HTTP发送到服务器。每50次传输左右一些encWAV字符串数据就会丢失其“=”填充。我最终得到fullBase64Data中的数据,一些段具有正确的填充,而其他段则没有。我无法弄清楚押韵或理由。造成这种情况的原因是什么?如何解决这个问题呢?
f = open(requestID + '/' + str(i) + '.wav', 'rb')
encWAV = b64encode(f.read())
f.close()
fullBase64Data = fullBase64Data + "::SPLITWAV::" + encWAV.decode('ascii');
url = 'http://REMOVED.com/queue/removed.php';
post_fields = {'RequestID': requestID, 'AudioData': fullBase64Data,'AgentName': agentName};
request = Request(url, urllib.urlencode(post_fields).encode());
答案 0 :(得分:0)
=
仅用于将结果填充为4个字符的倍数。如果数据恰好转换为这样的倍数,则最后不会得到任何=
。另见:Why does base64 encoding requires padding if the input length is not divisible by 3?
另外,ITYM urllib.parse.urlencode
?