使用 Base64 图像数据 URI 作为 POST 的输入
Using a Base64 image Data URI as input to a POST
我正在从 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 将文件存储在亚马逊上,returns URL。
URL 下载一个名为 "blob" 的文件,如果我将其重命名为 "blob.png",我可以看到它是一个有效的图像。所以一个问题是,我如何在表单数据中指定一个名称以使其具有适当的扩展名?而且,我在这里做错了什么,没有完全模拟普通文件上传通常会发生什么?
啊,明白了。必须先将 blob 转换为文件:
imageFile = new File([imageBlob], "image.png")
您可以指定 append 方法的第三个参数,它将用作文件名
ajaxData.append('files', imageBlob, "image.png");
我正在从 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 将文件存储在亚马逊上,returns URL。
URL 下载一个名为 "blob" 的文件,如果我将其重命名为 "blob.png",我可以看到它是一个有效的图像。所以一个问题是,我如何在表单数据中指定一个名称以使其具有适当的扩展名?而且,我在这里做错了什么,没有完全模拟普通文件上传通常会发生什么?
啊,明白了。必须先将 blob 转换为文件:
imageFile = new File([imageBlob], "image.png")
您可以指定 append 方法的第三个参数,它将用作文件名
ajaxData.append('files', imageBlob, "image.png");