将图片从数据网址上传到Axios?

Eva*_*nss 5 todataurl axios graphcool

我已经用这个将图像文件上传到API(Graphcool),并且一切正常:

fileUpload(file) {
        let data = new FormData();
        data.append('data', file);

        axios
            .post(`https://api.graph.cool/file/v1/MY-PROJECTID`, data, {
                headers: {
                    'Content-Type': 'multipart/form-data',
                },
            })
            .then(res => {
                console.log(res)
            });
    }
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,文件是从 <input type="file" />

但是现在我正在使用React Avatar Editor来允许用户裁剪图像并确保它们是正方形的:https : //github.com/mosch/react-avatar-editor

当您从React Avatar Editor访问图像时,它以数据URL的形式出现(通过Canvas.toDataURL())。

如何使用Axios上传数据URL?我是否需要先将图像转换为浏览器内存中的实际“文件”?

Tar*_*ani 5

这是以下线程的副本,只是用不同的语言

将 canvas.toDataURL() 作为 FormData 发送

您需要像下面这样更改代码

    function fileUpload(canvas) {
        let data = new FormData();
        canvas.toBlob(function (blob) {
            data.append('data', blob);
    
            axios
                .post(`https://api.graph.cool/file/v1/MY-PROJECTID`, data, {
                    headers: {
                        'Content-Type': 'multipart/form-data',
                    },
                })
                .then(res => {
                    console.log(res)
                });
        });
    }
Run Code Online (Sandbox Code Playgroud)