解码python中的字符串时出现base64错误

时间:2015-01-12 03:33:36

标签: python base64 syntax-error

我正在开发一个可以发送图片的聊天室。但是图像很大,所以我将它们部分发送并将每个部分添加到字符串中。当我尝试解码其中包含信息的字符串时,我收到此错误:

return binascii.a2b_base64(s)
Error: Incorrect padding

这是我的代码:

def getData(self):
    chatArea = self.chatArea

    imageBytes = ""
    imageMode = False

    while 1:
        data = self.s.recv(8000)
        if not data:
            break

        if imageMode == True:
            imageBytes = imageBytes + data

            if data[-1] == ")":
                newImage = open("Untitled.png", "wb")
                newImage.write(imageBytes.decode("base64"))
                newImage.close()
                imageMode = False
                print("Done")
        else:
            if re.findall(r'\[(.*?)\]', data) == ["Image"]:
                print("Got the data")
                imageMode = True
            else:
                string = data + "\n\n"
                chatArea.configure(state=NORMAL)
                chatArea.insert(END, string)
                chatArea.configure(state=DISABLED)

                newString = string.split(":")[0]

                self.chatArea.see(END)

        if newString == self.myName or newString == "Server":
            pass
        else:
            winsound.PlaySound("Notify.wav", winsound.SND_FILENAME)

为什么在尝试创建图像时出现此错误? 我该如何解决?

1 个答案:

答案 0 :(得分:0)

if data[-1] == ")":似乎期望base64编码的字符串以一个紧密的括号结尾。

这可能是您遇到问题的原因。 imageBytes数据是否具有需要修剪的尾随或前导协议数据。

希望这有帮助。