-1

使用Simple Upload Adapter,根据 CKEditor 5 文档在成功上传图像后,服务器应该返回:

这对于单个图像:

{
    default: 'http://example.com/images/image–default-size.png'
}

或者这个对于多个(即对于 srcset 属性)

{
    default: 'http://example.com/images/image–default-size.png',
    '160': 'http://example.com/images/image–size-160.image.png',
    '500': 'http://example.com/images/image–size-500.image.png',
    '1000': 'http://example.com/images/image–size-1000.image.png',
    '1052': 'http://example.com/images/image–default-size.png'
}

对于初学者来说,根据这个 SO post的文档是不正确的,所以我并不惊讶这不起作用。但是有谁知道 CKEditor 5 期望它正确插入/构建 srcset 属性的响应格式是什么?它确实需要default钥匙,但似乎忽略了其他钥匙!

4

1 回答 1

0

在上传适配器的_initListeners函数内部,您会发现 Promise通过以下方式解析:

resolve( {
    default: response.url
} );

解决方案 - 更改 Promise 以解决以下问题:

resolve( response.urls );

请注意,在此示例中,响应对象可能具有键urlurls.

我最终使用了以下内容,因为我忽略了服务器响应中的空键。

if ( response.hasOwnProperty( 'url' ) ) {
    resolve( {
        default: response.url
    } );
} else if ( response.hasOwnProperty( 'urls' ) ) {
    resolve( response.urls );
}

作为旁注,如果您已阅读我提到的其他 SO 帖子,我还建议您删除它(请参阅评论部分):

if ( !response /** || !response.uploaded */ ) {
    return reject( response && response.error && response.error.message ? response.error.message : genericError );
}

我不喜欢使用任意标志作为响应,如果上传失败,那么我宁愿看到指示它的 HTTP 状态代码,我看不出我们需要返回 200 和{ "uploaded" : false }

于 2020-02-19T21:43:48.677 回答