Я хочу загрузить любой файл (Word, PDF, Image ...) с вводом файла HTML на сервер python.
С помощью snakecharmerb ( Загрузить файл в формате JSON на веб-сервер Python ) я могу отправить файл, кодировав его следующим образом в JavaScript:
function fileChange(event) {
const file = event.target.files[0];
const fileReader = new FileReader();
fileReader.onload = function(e) {
const encodedFile = btoa(unescape(encodeURIComponent(e.target.result)));
uploadFile(JSON.stringify(encodedFile), file.name);
}
fileReader.readAsText(file);
}
В Python я могу прочитать и сохранить файл следующим образом:
import json
from base64 import b64decode
binary_data = b64decode(json.loads(file));
with open(file_name, "wb") as f:
f.write(binary_data)
Но полученный файл не читается или его содержимое закодировано неверно. Я думаю, что мне нужно кодировать двоичные данные в UTF-8. Но binary_data.encode("utf-8")
приводит к ошибке.
test_file.txt
Hello World!
Special chars: äöüß
Ошибка Python
UnicodeDecodeError('ascii', 'Hello World!\r\nSpecial chars: \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd', 29, 30, 'ordinal not in range(128)')
Я также пытался комбинировать его с .decode('string_escape')