我按如下方式发送文件。
with open(file,'rb') as f:
rh=f.read()
现在发送它我使用
sock.sendto(rh, (ip,port))
虽然接收到I尝试解码如下。
dat = sock.recvfrom()
data=dat.decode('ascii')
然后我将其写入文件。这对于文本文件来说非常好。但是,如果我发送和接收图像/ pdf文件,我会收到此错误..
File "code.py", line 16, in <module>
data=dat.decode('ascii')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 41: ordinal not in range(128)
我无法在这里找出问题所在。我也使用了dat.decode(&#39; utf-8&#39;)但没有使用
答案 0 :(得分:2)
尝试使用codecs
打开文件。
import codecs
f = codecs.open(filepath, encoding="ISO8859-1")
当我使用API上传PDF文件时为我工作。
答案 1 :(得分:1)
无需解码。您以二进制模式读取并发送文件,因此以二进制模式写入接收的文件。 encode
/ decode
用于将Unicode文本转换为二进制表示形式。
with open(output_filename,'wb') as f:
f.write(data)