-
Notifications
You must be signed in to change notification settings - Fork 533
配置图片&文件上传接口
sunsonliu edited this page Oct 16, 2023
·
7 revisions
用户点击上传图片、上传word、上传pdf等【工具栏】,或者把文件拖拽到编辑区进行上传,或者在外部ctrl+C复制图片在cherry 编辑区 ctrl+V粘贴图片,都会调用用户定义的上传文件接口进行文件上传操作(如果没有配置该接口,上传图片会以base64格式展示)
第一步需要定义一个上传接口,demo如下:
/**
* 上传文件函数
* @param file 上传文件的文件对象
* @param callback 回调函数,回调函数接收两个参数,第一个参数为文件上传后的url,第二个参数可选,为额外配置信息
*/
function myFileUpload(file, callback) {
// 先把文件上传到服务端,上传文件的具体代码需要自行实现
putFile(file, function(err, url) {
if (err) {
// 上传失败
} else {
callback(url);
}
});
}第二步,将上传文件的函数配置到cherry上,demo如下:
new Cherry({
id: 'markdown-container',
value: '## hello world',
fileUpload: myFileUpload,
});
当然,我们还可以有更精细化的控制,比如我们希望上传的视频可以有封面、上传的图片自动带上width=60%的样式,demo如下:
/**
* 上传文件函数
* @param file 上传文件的文件对象
* @param callback 回调函数,回调函数接收两个参数,第一个参数为文件上传后的url,第二个参数可选,为额外配置信息
*/
function myFileUpload(file, callback) {
// 先把文件上传到服务端,上传文件的具体代码需要自行实现
putFile(file, function(err, url, file) {
if (err) {
// 上传失败
} else {
// 如果上传的是视频
if (/video/i.test(file.type)) {
callback(url, {
name: '视频',
poster: `${url}?poster=true`, // 视频的封面图片url
isBorder: true, // 是否显示边框,默认false
isShadow: true, // 是否显示阴影,默认false
isRadius: true, // 是否显示圆角,默认false
});
} else if (/image/i.test(file.type)) {
// 如果上传的是图片
callback(url, {
name: '图片',
isBorder: true, // 是否显示边框,默认false
isShadow: true, // 是否显示阴影,默认false
isRadius: true, // 是否显示圆角,默认false
width: '60%', // 图片的宽度,默认100%,可配置百分比,也可配置像素值
height: 'auto', // 图片的高度,默认auto
});
} else {
// 如果上传的是文件
callback(url);
}
}
});
}anyway,目前我们已完成了cherry的主要配置,现在用户可以在你的服务上书写Markdown,并且上传图片了。