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
,还支持JSON
和application/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
中发送。