使用Base64图像数据URI作为POST的输入

时间:2017-07-14 16:14:08

标签: javascript ajax base64 blob multipartform-data

我从Base64数据URL格式的API中获取图像。我需要使用它作为另一个API的输入,这个API期望表单数据中的文件。这是CURL示例:

curl -X POST "<API URL>" -H 'content-type: multipart/form-data' -F "files=@/path/to/your/file.png"

我找到了一个dataURItoBlob实用程序,我正在这样做:

imageBlob = dataURItoBlob(dataUrl);
var ajaxData = new FormData();
ajaxData.append('files', imageBlob); 

然后我将ajaxData作为ajax POST的数据元素传递。该API将文件存储在Amazon上并返回一个URL。

URL下载一个名为“blob”的文件,如果我将其重命名为“blob.png”,我可以看到它是一个有效的图像。所以有一个问题是,如何在formdata中指定一个名称,以便它具有适当的扩展名?而且,我在这里做错了什么并没有完全模仿普通文件上传通常会发生什么?

2 个答案:

答案 0 :(得分:1)

您可以为append方法指定第三个参数,该参数将用作文件名

ajaxData.append('files', imageBlob, "image.png");

答案 1 :(得分:0)

啊想通了。必须先将blob转换为文件:

imageFile = new File([imageBlob], "image.png")