Django CKEditor 5.3.1如何上传PDF等非图片文件?
解决django-ckeditor上传非图片文件(如PDF)的问题
针对你使用django-ckeditor5.3.1和Django1.11.2时无法上传PDF等非图片文件的问题,结合你的现有配置,我整理了以下解决步骤:
1. 确认基础配置已生效
你已经在settings.py中设置了CKEDITOR_ALLOW_NONIMAGE_FILES = True,这是允许非图片文件上传的核心开关,这一步没问题,接下来需要让编辑器工具栏显示对应的上传入口。
2. 调整工具栏配置,添加文件上传按钮
你的当前工具栏(toolbar_Simple)里缺少专门的非图片文件上传按钮,需要把FileUpload按钮添加到工具栏中。修改CKEDITOR_CONFIGS如下:
CKEDITOR_CONFIGS = { 'default': { 'toolbar': 'Simple', 'toolbar_Simple': [ ['Bold', 'Italic', 'Underline'], ['Link', 'Unlink', 'FileUpload'], # 新增FileUpload按钮,用于上传PDF等非图片文件 ['Image', 'Update', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'uploadwidget'], ], 'autoParagraph': False, 'shiftEnterMode': 2, 'enterMode': 2, # 可选:添加这一行避免编辑器过滤掉文件链接 'allowedContent': True, }, }
3. 重启服务并清除缓存
修改配置后,重启你的Django服务,然后清除浏览器缓存(避免旧的工具栏配置被缓存),再打开编辑器就能看到新增的FileUpload按钮了。点击这个按钮会弹出上传窗口,选择PDF等文件完成上传后,编辑器会自动插入文件的链接。
4. 额外检查项
- 确保
CKEDITOR_UPLOAD_PATH对应的uploads/目录有正确的读写权限,保证Django进程能正常写入文件。 - 如果你需要用户权限控制,可根据需求设置
CKEDITOR_RESTRICT_BY_USER = True(仅允许用户查看自己上传的文件),保持默认False则所有用户可查看全部上传文件。
内容的提问来源于stack exchange,提问作者user9192656
相关产品推荐
相关产品推荐

