Dav*_*vid 2 file-upload ckeditor angular
我确实通过安装在我的角度项目中启动了经典的ckeditor...
npm install --save @ckeditor/ckeditor5-angular
npm install --save @ckeditor/ckeditor5-build-classic
Run Code Online (Sandbox Code Playgroud)
在我的组件中我已经导入了它......
import * as ClassicEditor from '@ckeditor/ckeditor5-build-classic';
Run Code Online (Sandbox Code Playgroud)
发起对象...
public Editor = ClassicEditor;
Run Code Online (Sandbox Code Playgroud)
在模板中这样开始
<ckeditor [config]="{ toolbar: [ 'heading', '|', 'bold', 'italic' ] }" name="Blog" placeholder="About your ride" [(ngModel)]="formModel.Blog" required [editor]="Editor" data="<p>Blog!</p>"></ckeditor>
Run Code Online (Sandbox Code Playgroud)
现在我想向此编辑器添加简单上传适配器。
我确实安装了
npm install --save @ckeditor/ckeditor5-upload
Run Code Online (Sandbox Code Playgroud)
然后有写着
我被困在这里了。我不知道该插件列表是什么以及在哪里。
有什么想法如何将图像上传添加到我的 ckeditor 吗?
更新 在我的组件中执行了以下操作:
public Editor = ClassicEditor;
public config = { plugins: [SimpleUploadAdapter]};
Run Code Online (Sandbox Code Playgroud)
在我的 HTML 中调用相同的
<ckeditor [config]="{ toolbar: [ 'heading', '|', 'bold', 'italic' ] }" name="Blog" placeholder="About your ride" [(ngModel)]="formModel.Blog" required [editor]="Editor" data="<p>Blog!</p>"></ckeditor>
Run Code Online (Sandbox Code Playgroud)
出现错误
未捕获的 CKEditorError:ckeditor-duplicated-modules:某些 CKEditor 5 模块重复
小智 11
我通过使用自定义上传适配器而不是SimpleUploadAdapter来完成此工作- 即
ready
提供实现的处理程序createUploadAdapter
所以我的代码是:
我的上传适配器.ts:
export class MyUploadAdapter {
loader: any;
xhr: any;
constructor( loader ) {
this.loader = loader;
}
upload() {
return this.loader.file
.then( file => new Promise( ( resolve, reject ) => {
this._initRequest();
this._initListeners( resolve, reject, file );
this._sendRequest( file );
} ) );
}
abort() {
if ( this.xhr ) {
this.xhr.abort();
}
}
_initRequest() {
const xhr = this.xhr = new XMLHttpRequest();
xhr.open( 'POST', 'http://yourserver/upload', true ); // TODO change the URL
xhr.responseType = 'json';
xhr.setRequestHeader("Accept", "application/json");
}
_initListeners( resolve, reject, file ) {
const xhr = this.xhr;
const loader = this.loader;
const genericErrorText = `Couldn't upload file: ${ file.name }.`;
xhr.addEventListener( 'error', () => reject( genericErrorText ) );
xhr.addEventListener( 'abort', () => reject() );
xhr.addEventListener( 'load', () => {
const response = xhr.response;
if ( !response || response.error ) {
return reject( response && response.error ? response.error.message : genericErrorText );
}
resolve( {
default: response.url
} );
} );
if ( xhr.upload ) {
xhr.upload.addEventListener( 'progress', evt => {
if ( evt.lengthComputable ) {
loader.uploadTotal = evt.total;
loader.uploaded = evt.loaded;
}
} );
}
}
_sendRequest( file ) {
const data = new FormData();
data.append( 'upload', file );
this.xhr.send( data );
}
}
Run Code Online (Sandbox Code Playgroud)
我的组件.html:
<ckeditor ... (ready)="onReady($event)"></ckeditor>
Run Code Online (Sandbox Code Playgroud)
我的组件.ts:
import * as ClassicEditor from '@ckeditor/ckeditor5-build-classic';
import { MyUploadAdapter } from '../my-upload-adapter';
//...
export class MyComponent implements OnInit {
Editor = ClassicEditor;
//...
onReady(editor: ClassicEditor): void {
editor.plugins.get( 'FileRepository' ).createUploadAdapter = ( loader ) => {
return new MyUploadAdapter( loader );
};
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6012 次 |
最近记录: |