Markdown编辑器上传图片后路径显示404怎么办?
在用Quill.js实现Markdown编辑器时,用户上传图片用FileSaver保存为base64格式,但渲染后图片路径显示404错误。明明保存成功了啊,控制台提示GET blob:null/xxx.jpg 404 (NOT FOUND)。
尝试过直接把base64字符串塞进标签,但Markdown渲染后自动转成普通路径。查了文档发现需要自定义Blot,但不知道怎么正确绑定本地文件路径。难道要改marked.js的解析规则吗?
测试代码大概是这样:
const ImageBlot = Quill.import('blots/image');
class Base64Image extends ImageBlot {
static create(value) {
const img = super.create();
img.src = value; // 这里直接赋base64字符串
return img;
}
}
Quill.register(Base64Image);
但保存后生成的Markdown内容变成,刷新页面就找不到了,这明明是临时对象的问题吧?
具体做法是这样:首先在服务端搭一个图片上传接口,可以用类似AWS S3或者本地存储来存图片。然后修改你的Quill配置,添加一个自定义的图片处理逻辑。
服务端这边需要写个简单的上传接口,以Node.js为例:
记得在服务端配置静态资源目录,让图片能被正常访问。这样做完之后,图片就会以永久URL的形式保存在Markdown内容里,刷新页面也不会丢失了。虽然看起来改动有点多,但这是最靠谱的解决方案。直接用base64确实省事,但对性能和数据库都不友好,特别是大图的时候。