После работы с ним в течение нескольких часов я получил его на работу.
Первая проблема (та, которую я прокомментировал в ответ @selens): Я получил Uncaught TypeError: _this.props.save is not a function
, потому что я не работал вСоздать или редактировать вид.Кажется, вам нужно использовать FileInput в Create или Edit Views.Если нет, кнопка Сохранить не будет работать.
Из документы :
сохранить: функция вызывается при отправке формы.Это автоматически передается реагирующим администратором, когда компонент формы используется внутри компонентов «Создание и редактирование».
Вторая проблема: В моем случае я загружаю по одному файлу за раз (несколько= {false} в FileInput).Однако код addUploadFeature.js
готов к использованию с несколькими файлами.Итак, Я отредактировал часть addUploadFeature.js
, чтобы загрузить только один файл. См. Полный файл ниже.
// addUploadFeature.js
const convertFileToBase64 = file => new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file.rawFile);
reader.onload = () => resolve(reader.result);
reader.onerror = reject;
});
const addUploadFeature = requestHandler => (type, resource, params) => {
if (type === 'UPDATE' && resource === 'myResource') {
if (params.data.myFile) {
// NEW CODE HERE (to upload just one file):
const myFile = params.data.myFile;
if ( !myFile.rawFile instanceof File ){
return Promise.reject('Error: Not a file...'); // Didn't test this...
}
return Promise.resolve( convertFileToBase64(myFile) )
.then( (picture64) => ({
src: picture64,
title: `${myFile.title}`
}))
.then( transformedMyFile => requestHandler(type, resource, {
...params,
data: {
...params.data,
myFile: transformedMyFile
}
}));
}
}
return requestHandler(type, resource, params);
};
export default addUploadFeature;
В конце концов, я смог отправить файл на сервер вФормат Base64.
Надеюсь, это пригодится кому-нибудь в будущем;)