反应管理中的多部分表单数据

Ako*_*res 5 react-admin

我正在尝试使用react-admin 将数据发送到我的自定义API。我想发送文件,我可以看到有,我想将该数据作为多部分表单数据发送。我遇到过base64编码帮助页面,作为一个新手反应,我很难弄清楚我需要做什么才能将其转换为多部分表单数据。

如果有人可以引导我完成使其工作的代码,那就太好了!我是来学习的。

预先非常感谢。

小智 8

我遇到了同样的问题,这是我的解决方案:

import { fetchUtils } from "react-admin";
import restServerProvider from 'ra-data-json-server';

const servicesHost = 'http://my-services-host';

const httpClient = (url, options = {}) => {
    if (!options.headers) {
        options.headers = new Headers({ Accept: 'application/json' });
    }
    const token = localStorage.getItem('token');
    options.headers.set('Authorization', `Bearer ${token}`);
    return fetchUtils.fetchJson(url, options);
};

const dataProvider = restServerProvider(servicesHost, httpClient);

const myDataProfider = {
    ...dataProvider,
    create: (resource, params) => {
        if (resource !== 'resource-with-file' || !params.data.theFile) {
            // fallback to the default implementation
            return dataProvider.create(resource, params);
        }

        let formData = new FormData();

        formData.append('paramOne', params.data.paramOne);
        formData.append('paramTwo', params.data.paramTwo);
        formData.append('theFile', params.data.theFile.rawFile);

        return httpClient(`${servicesHost}/${resource}`, {
            method: 'POST',
            body: formData,
        }).then(({ json }) => ({
            data: { ...params.data, id: json.id },
        }));
    }
};

export default myDataProfider;
Run Code Online (Sandbox Code Playgroud)