Я использую это в ответ на кодирование base64 файла изображения:
fileToBase64 = (filename, filepath) => {
return new Promise(resolve => {
var file = new File([filename], filepath);
var reader = new FileReader();
reader.onload = function(event) {
resolve(event.target.result);
};
reader.readAsDataURL(file);
});
};
Который вызывается так:
handleChangeFile = event => {
const { name, files } = event.target;
if (files.length) {
const file = files[0];
let fields = this.state.fields;
this.fileToBase64(file).then(result => {
fields[name].value = result;
});
fields[name].isFilled = true;
this.setState({
fields: fields
});
}
};
И переменная целых полей публикуетсяк серверу django никаких проблем пока нет.
На конце Python django:
str_encoded = request.data["file"]
str_decoded = base64.b64decode(str_encoded)
Вторая строка возвращает ошибку, binascii.Error: Invalid base64-encoded string: length cannot be 1 more than a multiple of 4
.Я гуглил и читал, что это, вероятно, проблема с заполнением, но я не знаю, как ее исправить.