Я пытаюсь загрузить файлы с веб-страницы javascript на сервер на основе python с помощью websockets.Сохранение загруженного двоичного файла в локальный файл
В JS, это то, как я передачи пакета данных через WebSocket:
var json = JSON.stringify({
'name': name,
'iData': image
});
в питона, я его расшифровке, как это:
noJson = json.loads(message)
fName = noJson["name"]
fData = noJson["iData"]
I знаете, что fData находится в формате Unicode, но когда я пытаюсь сохранить файл локально, это когда проблемы начинаются. Скажем, я пытаюсь загрузить/сохранить файл JPG. Глядя на этот файл после загрузки, я вижу в начале:
ÿØÿà^@^PJFIF
исходный код должен быть:
<FF><D8><FF><E0>^@^PJFIF
Так как я могу получить его, чтобы сохранить с кодами, вместо интерпретируемых символов Юникода ?
fd = codecs.open(fName, encoding='utf-8', mode='wb') ## On Unix, so the 'b' might be ignored
fd.write(fData)
fd.close()
(если я не использую «кодирование =» бит, он выдает исключение UnicodeDecodeError)
Я не эксперт по javascript, но я думаю, вам нужно закодировать двоичный код с чем-то вроде base64, чтобы загрузить его. – tdelaney
Взгляните на обсуждение здесь: http://stackoverflow.com/questions/1443158/binary-data-in-json-string-something-better-than-base64 – roeland