首页 > 解决方案 > 使用未签名上传云时必须指定上传预设

问题描述

我正在尝试使用 cloudinary API_URL 直接从我的前端(Angular 8)上传文件,但仍然收到相同的错误请求(400)和相同的错误“上传预设必须被列入未签名上传的白名单”,即使我尝试了不同的解决方案,如在 FormData 中提供 preset_name 并在我的 cloudinary 设置中将预设设置为未签名,但仍然无法正常工作。有什么解决办法吗?

我的上传代码:

 const images = new FormData();
images.append('images', file);
images.append('upload_preset', [presetName]);
this.progressBar = true

const req = new HttpRequest('POST', 'https://api.cloudinary.com/v1_1/[cloudName]/image/upload', images, 
    {
     reportProgress: true,
  
   });
this.http.request(req).subscribe(event => {
  if (event.type === HttpEventType.UploadProgress) {
    const percentDone = Math.round(100 * event.loaded / event.total);
    console.log(`File is ${percentDone}% uploaded.`);
  } else if (event instanceof HttpResponse) {
    console.log('File is completely uploaded!');
  }
});

标签: httprequestangular8cloudinary

解决方案


Upload preset must be whitelisted for unsigned uploads错误意味着您正在使用的预设被标记为签名上传。由于您没有执行经过身份验证的 API 调用,即使用签名,因此上传预设必须设置为未签名。如果您还没有,请转到您帐户中的“设置”->“上传”选项卡,并确认您尝试使用的预设的“签名模式”设置为“未签名”。

此外,我看到您正在传递一个名为“图像”的参数。这不是上传API 的有效参数。请将其更新为“文件”。

const data = new FormData();
data.append("file", file);
data.append("upload_preset", "default-preset");

推荐阅读