You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在HTML和JavaScript中配置TinyMCE与Cloudinary的问题

解决TinyMCE + Cloudinary纯前端图片上传的问题

嘿,我懂你的困扰——那个Ruby on Rails导向的教程确实对纯前端场景没帮助,而且不用服务端完全能搞定!我来一步步帮你梳理清楚:

1. 完全不需要搭建服务端端点!

你可以用**无签名上传预设(Unsigned Upload Preset)**实现纯前端上传,完全不需要服务端生成签名。只要在Cloudinary控制台里创建一个上传预设,开启「无签名」选项就行,这个预设就是你代码里用到的cloudinary_upload_preset。

2. 上传后获取正确图片URL的问题

你代码里的核心问题是success回调用了json.location,但Cloudinary上传API的响应里,符合你期望的完整HTTPS图片链接是存在secure_url字段里的(url字段是HTTP协议,更推荐用secure_url)。

修改后的代码如下:

images_upload_handler: function (blobInfo, success, failure) {
  var xhr, formData;
  xhr = new XMLHttpRequest();
  xhr.withCredentials = false;
  xhr.open('POST', 'https://api.cloudinary.com/v1_1/strova/upload');
  
  xhr.onload = function () {
    var json;
    if (xhr.status !== 200) {
      failure('HTTP Error: ' + xhr.status);
      return;
    }
    json = JSON.parse(xhr.responseText);
    // 替换成secure_url,就能得到你想要的完整CDN图片链接
    success(json.secure_url);
  };
  
  formData = new FormData();
  formData.append('file', blobInfo.blob(), blobInfo.filename());
  formData.append('upload_preset', cloudinary_upload_preset); // 确保这个变量已正确赋值
  
  xhr.send(formData);
}

3. 额外注意事项

  • 务必确认你的cloudinary_upload_preset是无签名的:在Cloudinary控制台的「上传预设」页面检查,一定要勾选「Unsigned」选项,否则前端上传会直接报错。
  • 如果你需要对图片做默认处理(比如压缩、格式转换),可以在上传预设里提前配置,上传后的URL会自动带上这些处理参数。

这样调整后,上传成功后TinyMCE就能正确插入你期望的那种Cloudinary图片链接了,全程不需要服务端做额外操作,只需要渲染HTML和JS就够!

内容的提问来源于stack exchange,提问作者Lee Merlas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:56:48