【问题标题】:Upload files from users local path using ckeditor?使用ckeditor从用户本地路径上传文件?
【发布时间】:2015-10-22 22:13:55
【问题描述】:
我正在使用 ckeditor 和 ckeditor 的 uploadimage 插件,它们可以帮助我在粘贴或拖放到 ckeditor 时上传图像。但是,当我从包含一些图像的 word 中复制内容并将其粘贴到 ckeditor 时,它不会上传该图像,因为它除了图像之外还有很多其他内容。现在粘贴后我有来自用户本地的图像路径。我可以使用 ckeditor 或通过 javascript 从用户的本地路径将这些文件上传到我的服务器吗?
http://docs.ckeditor.com/#!/guide/dev_file_upload这就是我说的插件。
【问题讨论】:
标签:
javascript
browser
ckeditor
browser-security
【解决方案1】:
没有。 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() );
} );
如果它包含文件,您可以使用fileLoader 上传它,上传完成后,将本地路径替换为服务器上图像的路径。
【解决方案2】:
正如 Piotr 所说,Javascript 不能直接读取本地文件,否则将是一个巨大的安全问题。
据我所知,关于从 MS Word 粘贴图像的最佳解决方法是使用 Images From Word 插件,该插件可检测这些图像并提示用户通过复制和粘贴来上传它们。
这对您来说可能并不重要,但另一个好处是它不需要您更改 CKEditor 的版本,因为它适用于任何 CKEditor 4.x