正在将上载的二进制文件保存到本地fi

2024-10-01 07:22:03 发布

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

我正在尝试用websockets将文件从javascript网页上传到基于python的服务器上。你知道吗

在JS中,我是这样通过websocket传输数据包的:

var json = JSON.stringify({
    'name': name,
    'iData': image
});

在python中,我是这样解码的:

noJson = json.loads(message)
fName = noJson["name"]
fData = noJson["iData"]

我知道fData是unicode格式的,但是当我试图在本地保存文件时,问题就出现了。比如说,我正试图上传/保存一个JPG文件。上传后查看该文件,我在开头看到:

ÿØÿà^@^PJFIF

原始代码应为:

<FF><D8><FF><E0>^@^PJFIF

那么,如何让它与代码一起保存,而不是用解释过的unicode字符保存呢?你知道吗

fd = codecs.open( fName, encoding='utf-8', mode='wb' ) ## On Unix, so the 'b' might be ignored
fd.write( fData)
fd.close()

(如果我不使用“encoding=”位,它会抛出UnicodeDecodeError异常)


Tags: 文件代码namejsonwebsocketsunicodejavascriptfname
1条回答
网友
1楼 · 发布于 2024-10-01 07:22:03

使用'latin-1'编码保存文件。你知道吗

你得到的fData已经编码了字符,也就是说,你得到了字符串u'\xff\xd8\xff\xe0^@^PJFIF'latin-1编码将把U+00和U+FF之间的所有代码点转换成一个字符,而不能转换U+FF以上的任何代码点。你知道吗

相关问题 更多 >