Can';不能让自制的CKEditor文件上传程序在web2py中工作

Can';不能让自制的CKEditor文件上传程序在web2py中工作,ckeditor,web2py,Ckeditor,Web2py,我的自定义CKEditor上传程序有点神秘。我试图上传到服务器的图像或任何文件都已正确上传,但无论我怎么做,其链接都不会显示在编辑器中。在我的upload_file.html视图中,对CKEditor的回调似乎无法正常工作。关于这些内容,CKEditor的文档非常稀少,因此我可以在这里使用一些指导 在我的控制器中,我具有以下上载功能: def upload_file(): upload = request.vars.upload if upload != None:

我的自定义CKEditor上传程序有点神秘。我试图上传到服务器的图像或任何文件都已正确上传,但无论我怎么做,其链接都不会显示在编辑器中。在我的upload_file.html视图中,对CKEditor的回调似乎无法正常工作。关于这些内容,CKEditor的文档非常稀少,因此我可以在这里使用一些指导

在我的控制器中,我具有以下上载功能:

def upload_file():
    upload = request.vars.upload
    if upload != None:
        if hasattr(upload, 'file'):
            old_filename = upload.filename
            new_filename = db.files.uploaded_data.store(upload.file, upload.filename)
            result = db.files.insert(filename = old_filename,
                                     uploaded_data = new_filename,
                                     created_on = datetime.today())
            if not result:
                message = T('An error has occured during upload.')
                url = ''
            else:
                message = T('File uploaded succesfully.')
                url = URL(r = request, f = 'download', args = new_filename)
            return dict(form = None, cknum = request.vars.CKEditorFuncNum, url = url, message = message)
        else:
            raise HTTP(401, T('Upload is not proper type.'))
    else:
        form = SQLFORM(db.files, fields = ['uploaded_data'])
        upload = request.vars.uploaded_data
        if upload != None:
            form.vars.filename = upload.filename
            form.vars.created_on = datetime.today()
        if form.process().accepted:
            response.flash = T('File uploaded successfully!')
        elif form.errors:
            response.flash = T('form has errors')
        else:
            response.flash = T('please fill out the form')
        return dict(form = clean_form(form))
此函数的视图如下所示:

{{if form != None:}}
    {{extend 'layout.html'}}
    {{=form}}
{{else:}}
    <html>
        <body>
            <script type="text/javascript">
                window.opener.CKEDITOR.tools.callFunction({{=cknum}}, '{{=url}}', '{{=message}}');
            </script>
        </body>
    </html>
{{pass}}
{{if form!=None:}
{{extend'layout.html'}
{{=形式}
{{else:}}
window.opener.CKEDITOR.tools.callFunction({{{=cknum},{{{=url},{{=message}');
{{pass}}
我有一个包含多个文本区域的表单的测试视图,所有文本区域都正确地转换为编辑器:

{{extend 'layout.html'}}
<script type="text/javascript">
    CKEDITOR.config.filebrowserBrowseUrl = "{{=URL(request.application, c='default', f='upload_file')}}";
    CKEDITOR.config.filebrowserUploadUrl = "{{=URL(request.application, c='default', f='upload_file')}}";
    CKEDITOR.config.filebrowserWindowHeight = '60%';
    CKEDITOR.config.filebrowserWindowWidth = '70%';
</script>
{{=form}}
{{extend'layout.html}
CKEDITOR.config.filebrowserBrowseUrl=“{{=URL(request.application,c='default',f='upload_file')}”;
CKEDITOR.config.filebrowserUploadUrl=“{{=URL(request.application,c='default',f='upload_file')}”;
CKEDITOR.config.filebrowserWindowHeight='60%';
CKEDITOR.config.filebrowserWindowWidth='70%';
{{=形式}

我终于找到了解决办法。上传文件功能的视图中有错误

window.opener.CKEDITOR.tools.callFunction({{=cknum}}, '{{=url}}', '{{=message}}');
应改写为:

window.parent.CKEDITOR.tools.callFunction({{=cknum}}, '{{=url}}', '{{=message}}');
我从web2pyslices复制了第一个版本,这让我非常头疼,所以我在这里写下这个答案,希望它能帮助其他试图将CKEditor与Web2py集成的人