无法将音频文件上载到Cloudinary API(使用javascript)

无法将音频文件上载到Cloudinary API(使用javascript),javascript,typescript,react-native,upload,cloudinary,Javascript,Typescript,React Native,Upload,Cloudinary,在我的react本机应用程序中,我实现了一个将图像上传到Cloudinary的功能,这非常有效。但是现在我也需要上传音频文件,所以我重新调整了函数,但是,尽管将“resource_type”参数指定为“raw”(我还尝试了“video”和“auto”),我还是得到了错误[错误:无效图像文件] const CLOUDINARY_UPLOAD_URL = `https://api.cloudinary.com/v1_1/${CLOUD_NAME}/image/upload`; // takes b

在我的react本机应用程序中,我实现了一个将图像上传到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,
    };
  };
const CLOUDINARY\u UPLOAD\u URL=`https://api.cloudinary.com/v1_1/${CLOUD_NAME}/image/upload`;
//将base64音频文件作为参数
export const uploadAudio=async(
音频:字符串
):承诺=>{
//函数,该函数向我的API请求签名以加载资源
常数{
签名,
时间戳,
上传你的预设,
}=等待GetCloudInRealSignature();
const formData=new formData();
formData.append(“文件”,音频);
formData.append(“资源类型”、“原始”);
formData.追加(“签名”,签名);
追加(“时间戳”,时间戳);
formData.append(“上传预设”,上传预设);
追加(“api_键”,api_键);
const res=wait fetch(CLOUDINARY\u UPLOAD\u URL{
方法:“张贴”,
正文:formData,
});
const data=wait res.json();
如果(!res.ok | | |!data.secure_url)抛出新错误(data.Error.message);
返回{
url:data.secure\u url,
asset\u id:data.asset\u id,
public\u id:data.public\u id,
};
};
有人知道我做错了什么吗?
谢谢。

由于您的URL始终使用
/image/Upload
,因此检查导致错误的
资源类型将是
资源类型

您可以删除
resource\u type
表单参数,并根据文件类型在URL中设置适当的路径,例如
/video/upload
(用于视频和音频)或
/raw/upload
用于其他文件类型,如txt、json等

或者,您可以将该值设置为
/auto/upload
,您可以上载任何文件类型,而无需将其更改为“image”、“video”或“raw”“自动”将把逻辑留给Cloudinary,以确定每个资产要使用的正确资源类型