当前位置: 代码迷 >> JavaScript >> 使用ckeditor从用户本地路径上传文件?
  详细解决方案

使用ckeditor从用户本地路径上传文件?

热度:79   发布时间:2023-06-05 11:58:24.0

我正在使用 ckeditor 的 ckeditor 和 uploadimage 插件,它们可以帮助我在粘贴或放置在 ckeditor 上时上传图像。 但是当我从 word 中复制包含一些图像的内容并将其粘贴到 ckeditor 时,它不会上传该图像,因为它除了图像之外还有很多其他内容。 现在粘贴后我有来自用户本地的图像路径。 我可以使用 ckeditor 或通过 javascript 将这些文件从用户的本地路径上传到我的服务器吗?

这是我正在谈论的插件。

不可以。JavaScript 无法访问您的本地驱动器。 uploadimage处理它从浏览器获取的 HTML,它取决于浏览器、操作系统,在这种情况下,还取决于 MS Word 的版本。 JavaScript 从剪贴板 API 获取数据,如果将返回本地路径而不是真实数据,并且没有文件,则无法完成任何智能操作。

但可以肯定的是,您可以检查dataTransfer包含的内容。 可能会发生不仅有 HTML 还可以上传的文件。 添加粘贴侦听器:

editor.on( 'paste', function( evt ) {
    console.log( evt.data.dataTransfer.getData( 'text/html' ) );
    console.log( evt.data.dataTransfer.getFilesCount() );
} );

如果它包含文件,您可以使用上传它,上传完成后,将本地路径替换为服务器上图像的路径。

正如 Piotr 所说,Javascript 不能直接读取本地文件,否则这将是一个巨大的安全问题。

我所知道的关于从 MS Word 粘贴图像的最佳解决方法是使用插件来检测这些图像并提示用户通过复制和粘贴来上传它们。

这对您来说可能并不重要,但另一个好处是它不需要您更改 CKEditor 的版本,因为它适用于任何 CKEditor 4.x

  相关解决方案