react-admin中的多部分表单数据

时间:2019-12-10 12:39:23

标签: react-admin

我正在尝试使用react-admin将数据发送到我的自定义API。我想发送文件,我看到有,我想将数据作为多部分表单数据发送。我遇到过the base64 encoding help page,作为一个新手来回应,我很难弄清楚将其转换为多部分表单数据所需要做的事情。

如果有人可以指导我完成使之生效的代码,那就太好了!我在这里学习。

非常感谢。

1 个答案:

答案 0 :(得分:1)

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

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;