在TinyMCE中自定义图像上传

时间:2016-04-22 11:56:51

标签: file-upload tinymce tinymce-4

我有一个ASP.NET Web API Web服务,我想用它来上传文件。我这样做的方式是客户端在http://myserver.com/api/images/upload向服务发布JSON对象。

该对象将包含图像的base64字符串表示形式,以及一些元数据,例如:

{ companyId: 12345, image: "someBase64encodedStringRepresentingTheImage" }

我想在客户端使用TinyMCE,但我无法弄清楚如何自定义它,以便以这种格式将图像上传到服务器。 (实际上,TinyMCE似乎没有配备图像上传器)

1 个答案:

答案 0 :(得分:2)

TinyMCE 4.2+实际上有自己的内置过程来处理你在编辑器中上传的图像:

https://www.tinymce.com/docs/advanced/handle-async-image-uploads/

基本过程是TinyMCE将为您插入编辑器的每个图像创建单独的HTTP POST。它会根据您初始化中images_upload_url选项的设置将该图像发送到您选择的URL(通过HTTP POST)。

images_upload_url(您必须创建)中引用的URL处的图像处理程序必须执行在应用程序中“存储”图像所需的任何操作。这可能意味着:

  • 将项目存储在Web服务器上的文件夹中
  • 将项目存储在数据库中
  • 将项目存储在资产管理系统中

...无论您选择存储图像的位置,您的图像处理程序都需要返回一行JSON,告诉TinyMCE图像的新位置。如TinyMCE文档中所述,这可能如下所示:

{ location : '/uploaded/image/path/image.png' }
然后,TinyMCE会将图像的src属性更新为您返回的值。如果您在init中使用images_upload_base_path setting,它将被添加到返回的位置。

这里的网络是TinyMCE知道你的内容中是否存在嵌入式图像,但它不可能知道在你的应用程序的上下文中如何处理该图像,这样你的作业(“图像处理程序”)就是你的东西了必须创造。

如果默认图像处理程序不够,可以选择编写自己的图像处理程序:

https://www.tinymce.com/docs/configure/file-image-upload/#images_upload_handler

我建议您尝试使用TinyMCE附带的上传器,这样您就不必编写和维护自己的代码(总是更容易),但如果内置代码不合适,您确实可以将其替换为自己的功能。