我从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中指定一个名称,以便它具有适当的扩展名?而且,我在这里做错了什么并没有完全模仿普通文件上传通常会发生什么?
答案 0 :(得分:1)
您可以为append方法指定第三个参数,该参数将用作文件名
ajaxData.append('files', imageBlob, "image.png");
答案 1 :(得分:0)
啊想通了。必须先将blob转换为文件:
imageFile = new File([imageBlob], "image.png")