无法将音频文件上传到 Cloudinary API(javascript)
Unable to upload audio files to Cloudinary API (with javascript)
在我的 React Native 应用程序中,我实现了一个将图像上传到 Cloudinary 的功能,并且效果很好。但是现在我也需要上传音频文件,所以我重新调整了功能但是,尽管已将“resource_type”参数指定为“raw”(我也尝试使用“video”和“auto”)我得到了错误[错误:图像文件无效]。
const CLOUDINARY_UPLOAD_URL = `https://api.cloudinary.com/v1_1/${CLOUD_NAME}/image/upload`;
// takes base64 audio file as argument
export const uploadAudio = async (
audio: string
): Promise<UploadImageResult> => {
// function that requests a signature to my API in order to load the resource
const {
signature,
timestamp,
upload_preset,
} = await getCloudinarySignature();
const formData = new FormData();
formData.append("file", audio);
formData.append("resource_type", "raw");
formData.append("signature", signature);
formData.append("timestamp", timestamp);
formData.append("upload_preset", upload_preset);
formData.append("api_key", API_KEY);
const res = await fetch(CLOUDINARY_UPLOAD_URL, {
method: "POST",
body: formData,
});
const data = await res.json();
if (!res.ok || !data.secure_url) throw new Error(data.error.message);
return {
url: data.secure_url,
asset_id: data.asset_id,
public_id: data.public_id,
};
};
有谁知道我做错了什么?
谢谢。
resource_type
是上传 API 端点的一部分(在您的情况下是 CLOUDINARY_UPLOAD_URL
)而不是表单参数的一部分,并且由于您的 URL 始终使用 /image/upload
这将是被检查导致错误的 resource_type
。
您可以删除 resource_type
表单参数并根据文件类型在 URL 中设置适当的路径,例如/video/upload
(对于视频和音频)或 /raw/upload
对于其他文件类型,例如 txt、json 等
或者,您可以将值设置为 /auto/upload
,您可以上传任何文件类型,而无需将其具体更改为 'image'、'video' 或 'raw'。 'auto' 会将逻辑留给 Cloudinary 来确定 resource_type 使用每个资产的权利。
在我的 React Native 应用程序中,我实现了一个将图像上传到 Cloudinary 的功能,并且效果很好。但是现在我也需要上传音频文件,所以我重新调整了功能但是,尽管已将“resource_type”参数指定为“raw”(我也尝试使用“video”和“auto”)我得到了错误[错误:图像文件无效]。
const CLOUDINARY_UPLOAD_URL = `https://api.cloudinary.com/v1_1/${CLOUD_NAME}/image/upload`;
// takes base64 audio file as argument
export const uploadAudio = async (
audio: string
): Promise<UploadImageResult> => {
// function that requests a signature to my API in order to load the resource
const {
signature,
timestamp,
upload_preset,
} = await getCloudinarySignature();
const formData = new FormData();
formData.append("file", audio);
formData.append("resource_type", "raw");
formData.append("signature", signature);
formData.append("timestamp", timestamp);
formData.append("upload_preset", upload_preset);
formData.append("api_key", API_KEY);
const res = await fetch(CLOUDINARY_UPLOAD_URL, {
method: "POST",
body: formData,
});
const data = await res.json();
if (!res.ok || !data.secure_url) throw new Error(data.error.message);
return {
url: data.secure_url,
asset_id: data.asset_id,
public_id: data.public_id,
};
};
有谁知道我做错了什么? 谢谢。
resource_type
是上传 API 端点的一部分(在您的情况下是 CLOUDINARY_UPLOAD_URL
)而不是表单参数的一部分,并且由于您的 URL 始终使用 /image/upload
这将是被检查导致错误的 resource_type
。
您可以删除 resource_type
表单参数并根据文件类型在 URL 中设置适当的路径,例如/video/upload
(对于视频和音频)或 /raw/upload
对于其他文件类型,例如 txt、json 等
或者,您可以将值设置为 /auto/upload
,您可以上传任何文件类型,而无需将其具体更改为 'image'、'video' 或 'raw'。 'auto' 会将逻辑留给 Cloudinary 来确定 resource_type 使用每个资产的权利。