如何发送POST请求作为表单数据时,FormData不可用?(Airtable脚本)



cloudary API需要使用multipart/form-data发送数据,但我在一个FormData不可用的环境中工作。

那么我怎么能做这么简单的事情呢?

const formData = new FormData();
formData.append('file', assetUrl);
formData.append('upload_preset', CLOUDINARY_UNSIGNED_UPLOAD_PRESET);
formData.append('cloud_name', CLOUDINARY_CLOUD_NAME);
console.debug(`Uploading file (id: ${id}) to Cloudinary`, CLOUDINARY_UPLOAD_URL, formData);
const response = await fetch(CLOUDINARY_UPLOAD_URL, {
method: 'POST',
body: formData,
});

我尝试了不同的方法,但似乎cloudary API对此非常敏感,并且不允许以multipart/form-data以外的任何其他格式发送数据。

cloudary API不仅支持multipart/form-data,还支持JSONapplication/x-www-form-urlencoded

如果要发送一个字符串作为file参数的值,例如远程URL(在您的情况下)或Base64,那么您可以使用上述任何一种Content-Types。

例如,您可以尝试以下示例,它将成功地将图像上传到云(您将需要用实际值替换<your-cloud>,<file-url><upload-preset>):
fetch('https://api.cloudinary.com/v1_1/<your-cloud>/image/upload', {
method: 'POST',
headers:{
'Content-Type': 'application/x-www-form-urlencoded'
},    
body: new URLSearchParams({
'file': '<file-url>',
'upload_preset': '<upload-preset>'
})
});

请注意,cloud_name是从您发送数据的URL派生的,因此它不应该在您的请求body中发送。

最新更新