使用unsigned upload cloudinary时必须指定上传预设

AOU*_*lim 3 httprequest cloudinary angular8

我尝试使用 cloudinary API_URL 直接从我的前端(Angular 8)上传文件,但仍然收到相同的错误请求(400)和相同的错误“上传预设必须列入未签名上传的白名单”,即使我尝试了不同的解决方案,例如在 FormData 中提供预设名称,并在我的 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!');
  }
});
Run Code Online (Sandbox Code Playgroud)

小智 7

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

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

const data = new FormData();
data.append("file", file);
data.append("upload_preset", "default-preset");
Run Code Online (Sandbox Code Playgroud)