Vditor图片回显避坑指南:为什么你的Markdown图片显示不出来?

解决优快云 导入Markdown图片失效不显示问题 每次将MarkDown文件导入优快云的时候,有些图片总是由于防盗链的问题导致图片加载不出来,还得手动再导一遍,极其不方便。所以我们能不能建立一个属于自己的图片服务器或者说在线图库呢,而且每次使用Typora插入图片的时候都会自动的上传到该服务器。这样,优快云再导入的时候就不会出现防盗链问题了,这里,使用方式就可以轻松做到,而且配置极其简单。 阅读详情

Vditor图片回显避坑指南:为什么你的Markdown图片显示不出来?

你是否也遇到过这样的场景:在Vditor编辑器中精心上传了图片,预览时却只看到一个破碎的图标,或者干脆一片空白?这不仅仅是代码配置问题,更可能是一个个隐蔽的“坑”在作祟。对于追求极致内容展示体验的开发者而言,Markdown图片无法正常回显,直接影响了内容的完整性和专业性。今天,我们就来深入剖析Vditor图片回显背后的那些关键配置,特别是那些容易被忽略的细节和陷阱,帮你从根源上解决图片“失踪”的问题。

图片回显失败,表象是图片不显示,但背后原因可能千差万别。它可能源于上传路径与预览路径的不匹配,可能是懒加载配置这个“好心办坏事”的典型,也可能是CDN地址、主题模式切换带来的兼容性挑战。理解这些配置项之间的联动关系,远比机械地复制粘贴代码更重要。本文将从实战出发,结合具体案例和配置对比,为你梳理出一条清晰的排查路径,让你不仅能解决问题,更能理解原理,从而在未来的项目中游刃有余。

1. 核心原理:从上传到回显的完整链路解析

要解决问题,首先要理解Vditor处理图片的完整工作流。这个过程并非简单的“上传-存储-显示”,而是一个涉及前端配置、后端接口、资源路径映射和渲染引擎协同的链条。任何一个环节的断裂,都会导致最终回显失败。

图片生命周期的三个阶段:

  1. 上传阶段:用户通过Vditor的上传组件选择图片文件,前端进行基础校验(如大小、类型)后,通过handler函数调用后端API,将文件数据发送至服务器。
  2. 存储与链接生成阶段:服务器接收文件,将其存储到特定位置(可能是本地磁盘、对象存储等),并返回一个可以公开访问的URL链接。这个链接会被Vditor以Markdown格式(![alt](url))插入到编辑器中。
  3. 回显/预览阶段:当用户切换至预览模式,或使用独立的预览插件时,Vditor的Markdown解析器会识别图片语法,并尝试从url指向的地址加载图片资源。问题最常爆发在这一步,因为这里涉及路径解析、资源请求和渲染策略。

一个常见的误解是,只要上传成功了,图片就一定能显示。实际上,上传成功仅意味着文件已抵达服务器并生成了一个链接。这个链接在预览时是否能被浏览器正确请求并加载,取决于诸多配置和环境因素。

注意:开发环境和生产环境的差异是图片回显问题的重灾区。本地开发时使用的可能是localhost或相对路径,而生产环境是正式的域名和CDN地址。如果配置没有根据环境动态调整,就会导致预览时图片路径错误。

让我们通过一个简单的表格,对比一下理想情况与常见问题场景下,图片URL的形态差异:

场景编辑器内插入的图片URL示例预览时浏览器实际请求的URL结果分析
理想情况![图片](https://cdn.yourdomain.com/upload/abc.jpg)https://cdn.yourdomain.com/upload/abc.jpg绝对路径,域名与当前页面同源或配置了CORS,请求成功。
相对路径陷阱![图片](/upload/abc.jpg)https://当前页面域名/upload/abc.jpg如果服务器未在根目录提供/upload静态资源服务,则404。
协议缺失(Protocol-Relative)![图片](//cdn.yourdomain.com/abc.jpg)若页面为https:,则请求https://cdn...;若为http:,则请求http://cdn...依赖页面协议,在本地文件协议(file://)下会失败。
懒加载干扰![图片](https://cdn.yourdomain.com/abc.jpg)初始请求可能被替换为占位符,滚动后才加载真实URL。若懒加载库配置错误或冲突,可能导致占位符无法被替换。

理解了这个链路,我们就可以有针对性地进入下一个环节:配置细节的深度剖析。

2. 上传配置的隐蔽陷阱:不止是handler函数

很多开发者将注意力完全放在upload.handler这个异步函数上,认为只要这里返回了正确的URL,万事大吉。然而,上传配置中的其他选项同样至关重要,它们像一道道闸门,决定了哪些文件能进入handler流程,以及生成的Markdown文本是否“健康”。

首先,我们来看一个经过实战打磨的相对完整的upload配置示例。请注意其中的注释,它们指出了关键点:

upload: {
  accept: 'image/*',
  // 关键点1:与后端约定的文件字段名,必须一致
  fieldName: 'file',
  // 关键点2:文件名清洗,避免特殊字符导致存储或URL编码问题
  filename(name) {
    // 移除可能引起路径遍历、URL问题的字符
    return name
      .replace(/[<>:"/\\|?*]/g, '-') // 替换Windows文件名非法字符
      .replace(/\s+/g, '-'); // 空格替换为连字符,更URL友好
  },
  max: 10 * 1024 * 1024, // 10MB限制
  multiple: true, // 是否支持多选
  withCredentials: false, // 根据跨域需求设置
  // 关键点3:前端预校验,减轻服务器压力,提供即时反馈
  validate(files) {
    const file = files[0];
    if (!file.type.startsWith('image/')) {
      this.$message.error('请选择图片文件');
      return false;
    }
    if (file.size > this.max) {
      this.$message.error(`图片大小不能超过 ${this.max / 1024 / 1024}MB`);
      return false;
    }
    return true;
  },
  // 核心:异步上传处理器
  async handler(files) {
    const formData = new FormData();
    files.forEach(file => {
      formData.append(this.fieldName, file); // 使用配置的fieldName
    });

    try {
      const response = await axios.post('/api/upload/image', formData, {
        headers: { 'Content-Type': 'multipart/form-data' }
      });
      // 关键点4:处理后端返回的数据结构
      if (response.data.code === 200 && response.data.data) {
        const url = response.data.data.url; // 假设后端返回{code, data: {url: '...'}}
        // 关键点5:插入编辑器文本的格式
        // 确保URL是完整的、可公开访问的地址
        const markdownImages = files.map(file => `![${file.name}](${url})`).join('\n');
        this.editorInstance.insertValue(markdownImages);
        return '上传成功';
      } else {
        throw new Error(response.data.message || '上传失败');
      }
    } catch (error) {
      console.error('上传出错:', error);
      return `上传失败: ${error.message}`;
    }
  }
}

几个极易被忽略的“坑”:

  • filename的清洗逻辑:原始示例中使用了一些正则过滤,但可能过于严格或存在遗漏。例如,中文括号、百分号%在URL中需要编码,如果直接保留,可能导致生成的Markdown链接在解析时出错。更稳妥的做法是,后端在保存文件时生成一个唯一的、安全的文件名(如UUID),前端仅做基础清理或直接使用后端返回的文件名。
  • handler中的URL拼接:editor.value?.insertValue(${name}) 这行代码风险很高。它依赖于一个baseUploadApi函数来拼接URL。如果这个函数在不同环境(开发/生产)下行为不一致,或者拼接出的URL不是完整的绝对URL,预览时必然失败。最佳实践是:后端直接返回完整的、可直接用于src属性的HTTP/HTTPS URL。
  • success回调的误解:success回调接收的参数是handler函数返回的字符串(如“上传成功”),而不是后端返回的数据。它通常用于触发上传成功的全局通知,而非处理图片URL。

提示:强烈建议在上传配置中开启multiple: true,并让handler能处理文件数组。这样,当用户多选图片时,可以一次性上传并插入多个![...](...)标签,提升体验。同时,确保后端API也能支持多文件上传。

3. 预览配置的“头号杀手”:懒加载与CDN路径

图片上传顺利,编辑器里也能看到正确的Markdown代码,但一切在切换到预览模式时崩塌。这十有八九是预览插件的配置问题。其中,lazyLoadImage 选项是导致图片“消失”的最常见元凶。

Vditor的预览组件为了优化性能,默认可能集成或兼容了图片懒加载功能。其原理是:将真实的img标签的src属性暂存,先设置为一个占位符图片(由lazyLoadImage指定),当图片滚动到视口附近时,再替换为真实地址。如果这个占位符路径错误,或者懒加载逻辑与你的页面环境冲突,你就会一直看到这个占位符(可能是一个加载旋转图标,也可能因路径404而显示破碎图)。

错误配置示例(直接摘自原始内容):

const defaultOptions = {
  cdn: "https://ld246.com/js/lib/vditor",
  // ... 其他配置
  // lazyLoadImage: "//unpkg.com/vditor/dist/images/img-loading.svg" // 这行被注释了,但隐患仍在
};

即使被注释,如果Vditor内部有默认的懒加载行为,问题依旧。更危险的是直接取消注释使用一个可能无法访问的CDN地址。

正确的解决思路:

  1. 彻底禁用懒加载(推荐用于后台等非长页面):如果你管理的文章预览页面并不长,或者对首屏图片加载速度有严格要求,可以直接关闭懒加载。

    const previewOptions = {
      // ... 其他配置
      lazyLoadImage: undefined, // 明确设置为undefined,或直接不设置该属性
      // 某些版本可能需要设置为空字符串或false,请查阅对应版本文档
    };
    
  2. 正确配置本地占位符:如果确实需要懒加载,确保占位符图片是可靠可访问的。可以将占位图放在你自己的项目静态资源目录下。

    const previewOptions = {
      // ... 其他配置
      lazyLoadImage: '/static/images/loading-placeholder.svg', // 使用项目内的相对或绝对路径
    };
    

另一个关键配置:cdn cdn选项用于指定Vditor自身依赖的资源(如样式、图标字体)的基地址。虽然它不直接影响你的内容图片,但如果设置错误,可能导致预览组件的样式错乱,间接影响图片容器布局。通常,你可以使用官方CDN,或者将Vditor资源打包到本地后,将此路径指向你的静态资源目录。

const previewOptions = {
  // 使用官方CDN(注意版本号)
  cdn: 'https://unpkg.com/vditor@3.10.0/dist',
  // 或者使用本地化后的路径
  // cdn: '/static/vditor',
  mode: 'light', // 与主题保持一致
  theme: {
    current: 'light' // 明确指定主题
  },
  // 其他渲染选项...
};

主题模式同步:mode和theme.current务必保持一致(‘dark’或’light’)。在暗黑主题下,预览区域会有特定的CSS类名,如果配置不一致,可能导致CSS变量未生效,使得包含图片的背景、边框等样式异常,给人一种“图片没加载”的错觉。

4. 环境与部署:动态路径与跨域问题

开发环境一切正常,部署上线后图片全挂。这是经典的生产环境问题。核心在于:所有图片URL必须是生产环境可访问的绝对路径。

动态化你的配置: 不要将上传API地址、CDN地址、图片域名在代码中写死。利用构建工具的环境变量。

// 在配置文件中
const getUploadUrl = () => {
  // 根据环境变量动态返回
  if (process.env.NODE_ENV === 'production') {
    return 'https://api.your-app.com/v1/upload';
  } else {
    return '/api/upload'; // 开发环境代理地址
  }
};

const getImageBaseUrl = () => {
  // 图片存储的CDN或静态服务器地址
  return process.env.VUE_APP_IMAGE_BASE_URL || 'https://static.your-app.com';
};

// 在upload.handler中使用
async handler(files) {
  const res = await axios.post(getUploadUrl(), formData);
  // 假设后端返回的是文件存储的相对路径,如 'uploads/2023/10/abc.jpg'
  const relativePath = res.data.path;
  // 动态拼接完整的、环境正确的绝对URL
  const fullImageUrl = new URL(relativePath, getImageBaseUrl()).href;
  editor.insertValue(`![${name}](${fullImageUrl})`);
}

跨域问题(CORS): 如果你的图片存储在另一个域名下(如专门的CDN域名 static.your-app.com),而你的页面运行在 www.your-app.com,浏览器会因为同源策略阻止图片加载。解决方法是在图片存储服务器(或CDN服务商)配置CORS策略,允许你的页面域名访问。

例如,在阿里云OSS或AWS S3的Bucket配置中,添加如下CORS规则:

Allowed Origins: https://www.your-app.com
Allowed Methods: GET, HEAD
Allowed Headers: *

HTTPS混合内容(Mixed Content)问题: 如果你的网站通过HTTPS访问,但图片URL是HTTP,现代浏览器会默认阻止加载这些“不安全”的内容,导致图片不显示。确保图片链接也使用HTTPS。使用协议相对URL(//example.com/img.jpg)是一个方案,但更推荐始终生成带https:的绝对URL。

5. 高级排查与调试技巧

当以上常规检查都做完后问题依旧,就需要动用更深入的排查手段了。

浏览器开发者工具是你的最佳伙伴:

  1. 检查网络请求:打开预览页面,进入开发者工具的Network(网络)面板,筛选Img(图片)类型。查看是否有图片请求发出?请求的URL是什么?状态码是404、403还是CORS错误?这能直接定位是路径错误还是权限问题。

    • 状态码404:路径错误,检查URL拼接逻辑。
    • 状态码403:权限不足,检查文件存储的公开读权限或CDN鉴权。
    • CORS错误:控制台会有红色报错,配置CDN的CORS。
  2. 检查元素与源码:在Elements(元素)面板找到不显示的图片<img>标签。

    • 查看它的src属性是否是你期望的URL?
    • 是否有一个data-src属性存放了真实URL,而src是一个占位符?这是懒加载的典型特征。检查是否有正确的JavaScript在滚动时执行了替换。
  3. 查看控制台日志:Vditor在初始化或渲染过程中可能会输出错误或警告信息,这些是宝贵的线索。

构建一个最小可复现环境: 当问题复杂时,尝试剥离你的业务代码,创建一个全新的、只包含Vditor核心上传和预览功能的最小化页面。逐步添加你的配置(CDN、懒加载、自定义handler),观察在哪一步图片回显失败。这个过程能帮你精确锁定问题配置项。

关注版本兼容性: Vditor不同大版本(如v2与v3)的API和配置项可能有较大变化。确保你查阅的文档、引用的CDN地址、以及代码中的配置选项,都与你项目中安装的Vditor版本匹配。一个v2的配置示例用在v3的项目里,很可能不工作。

最后,记住一个原则:让后端返回可直接使用的完整图片URL,这是避免前端路径处理复杂性的最有效方法。前端只负责接收这个URL并插入到Markdown中,预览时Vditor会直接使用这个URL加载图片,链路最短,出错概率最低。

图片回显问题虽然琐碎,但解决后带来的内容展示体验提升是立竿见影的。希望这些从原理到实践、从配置到排查的梳理,能帮你彻底扫清Vditor图片展示路上的障碍。

vditor图片上传和图片回显功能具体实现 配置option中的upload项upload: {accept: "image/*", // 图片类型// 过滤特殊字符},// 图片上传校验,可以校验图片大小及类型if (!isLt2M) {message("上传图片大小不能超过 20MB!if (!message("仅支持上传图片!},let res;// 文本编辑器中插入图片return "上传成功";return "上传失败";},}, 阅读详情

相关推荐

深入解析Vditor图片上传与回显功能的实现细节

本文深入解析Vditor编辑器的图片上传与回显功能实现细节,涵盖基础配置、文件预处理、异步上传流程及图片回显优化。特别针对开发者常见的跨域问题、图片压缩和错误处理提供了实用解决方案,帮助开发者高效集成Vditor的图片上传功能。

weixin_30296405的博客 390

Markdown中图片无法显示的问题解决

在md中,经常需要插入图片,在插入图片后,采用pdf,html等方式查看的时候,经常会遇到图片无法加载出来的问题,因为图片一般都存在本地,离线查看时无法加载本地路径导致. 试用场景: ![节点][xxx.png] 解决办法: 采用html的标签方式 <img src=xxxx.png align=center /> ...

xieluyu的博客 4949

Vditor图片上传功能实战:从配置到插入编辑器的完整流程(附常见错误排查)

本文详细介绍了如何在Vditor编辑器中配置和实现图片上传功能,涵盖从基础安装、核心上传配置到服务器端对接的完整流程。重点讲解了图片回显、路径处理等关键环节,并提供了常见错误排查与性能优化方案,帮助开发者高效集成这一功能。

weixin_29007243的博客 440

Markdown导出的html笔记移动后,图片不显示问题

markdown导出的html文件移动位置后,图片不显示

weixin_42693865的博客 1531

水下探测小白必看:单波束vs多波束声呐,5分钟搞懂核心区别

本文为水下探测新手清晰解析了单波束与多波束声呐的核心区别。单波束声呐如同精准的“手电筒”,进行逐点扫描,适用于定点测深和目标探测;而多波束声呐则像“聚光灯”,能一次性覆盖一个扇区,高效获取海底地形三维信息,是海底测绘和水下三维建模的理想选择。文章通过生动的比喻和对比表格,帮助读者快速理解两者原理、效率差异及适用场景。

linux6sysadmin的博客 1049

FPGA以太网开发实战:YT8511 PHY芯片MDIO接口配置全流程(附Verilog代码)

本文详细介绍了FPGA以太网开发中YT8511 PHY芯片MDIO接口的配置全流程,包括MDIO接口技术解析、Verilog状态机设计、核心代码实现细节及实战调试经验。通过提供经过验证的Verilog代码和优化策略,帮助开发者快速掌握以太网PHY芯片配置技术,提升通信系统性能。

weixin_29184371的博客 233

vscode打开markdown文件 不显示图片 预览markdown文件

vscode打开markdown文件 不显示图片 预览markdown文件

OceanWaves1993的博客 8631

车辆动力学从入门到进阶之路(传统篇)

新手如何入门车辆动力学开发领域,本文为您引路!

CrazyRabbit的博客 1万+

【Markdown】插入图片、调节大小和位置以及不显示时的解决方法

Markdown插入图片:1.如何插入图片 2.如何调节图片大小、使图片居中显示等 3.插入图片不显示的问题和解决方法

m0_73569204的博客 3966

VS配置RTKLIB(卫星定位开源代码)环境

@RTKlib代码调试教程-Visual Studio 2019 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 ##RTKLIB-rtklib_2.4.3 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @RTKlib代码调试教程-Visual Studio 2019 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技

qq_42209977的博客 4486

从CMT2300A实战出发:Sub1G射频匹配电路设计要点与315MHz应用详解

本文从CMT2300A芯片实战出发,详细解析Sub1G射频匹配电路设计要点,特别针对315MHz应用场景。内容涵盖频段划分逻辑、调制方式选择、晶体振荡器设计等基础认知,以及315MHz匹配电路物料选型、巴伦网络处理等实战技巧,并分享PCB布局防干扰设计和实测验证方法,助力开发者优化射频通信性能。

weixin_29238147的博客 166

vue使用vditor(组件)

vue使用vditor(组件) vue vditor默认预览模式 vue vditor隐藏工具栏

lmy_loveF的博客 3703

ICESat-2数据下载的两种方法

ICESat-2数据下载

weixin_46341898的博客 2902

vue + vditor(markdown编辑器)

是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript 以及 Vue、React、Angular 和 Svelte 等框架。1.在mounted 中等vditor 初始化完成后,再通过监听value设置编辑器的值。2. beforeDestory() 销毁操作。1.vue2 安装(建议安装3.7.7及以下版本)3. vue3安装最新版本即可。2.vditor组件。

qq_44376306的博客 2309

别再硬编码了!WinCC子画面动态加载的5种C脚本写法对比

本文深入解析WinCC子画面动态加载的5种C脚本实现方案,包括基础加载、路径动态解析、多语言切换、窗口自适应布局和混合架构交互。通过代码示例和场景分析,帮助开发者避免硬编码问题,提升工业自动化系统的交互效率和可维护性。特别推荐路径动态解析方案,有效解决项目路径管理的痛点。

weixin_29008691的博客 478

图像处理 | 基于matlab的多尺度Retinex(MSR)和自适应直方图均衡化(CLAHE)算法联合的低照度图像增强(附代码)

本文介绍了一种基于多尺度Retinex(MSR)和CLAHE的低照度图像增强算法。算法首先对图像进行多尺度Retinex处理,通过不同尺度的高斯核去除光照影响;然后采用CLAHE算法进行对比度增强。Matlab实现展示了算法流程,包含灰度转换、多尺度Retinex增强和CLAHE处理。实验结果显示,该方法能有效提升低照度图像的可见性,增强细节表现。最后提出了改进建议,包括引入深度学习方法和优化参数选择。

尘世冰封的专栏 954

vue中使用vditor(发布,编辑,详情回显、上传图片+粘贴图片回显问题,表情的处理)

1.使用方法 1.html 安装 npm install vditor --save vue页面 <div id="markdownContent"></div> 2.dom 引入 import Vditor from "vditor" import "vditor/dist/index.css" mounted() { this.getToken() this.vditorFun() }, methods: { //编辑器 vditorFun() {

qq_38394175的博客 7753

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

vditor富文本编辑器使用方法

vditor富文本编辑器使用方法

qq_39111074的博客 1094

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

关于Markdown图片无法显示的问题解决方法

试了很多方法都不行,搜索说要安的插件都试过了还是不显示,用一个取巧的方法实现了。 一、借助博客网站 可以在csdn写博客,图片直接可以复制到markdown,一切都正常 二、借助GitHub 在自己的github上新建一个仓库, 怎么新建仓库大家应该都会吧,我这里就不赘述了,不会的可以看我的这个文章 https://blog.youkuaiyun.com/qq_41568313/article/details/113834550?spm=1001.2014.3001.5501 在自己博客项目的public

Lucivita的博客 3753

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

解决MarkDown文本中图片在别人电脑无法显示的问题。

解决MarkDown文本中图片在别人电脑无法显示的问题。

qq_52983535的博客 9512

Vscode编辑器下 Markdown无法显示图片

这是vscode自带的预览器,装了Markdown Preview Enhanced ‘ctrl+K V’ 调用的是MPE的预览器。eg.如果装了Markdown Preview Enhanced的插件,这个选项是找不到的,停用之后再设置。重启vscode,再MD文件右上方有两个预览按钮(一个是MPE的,一个是系统默认的),点开系统默认的。大部分出现这种情况是因为新版本的vscode会阻拦有风险的资源显示,将安全等级调低即可。2.在预览界面的右上方有三个小点,选择更改预览安全设置。选择允许不安全的内容。

专注于硬件开发,嵌入式研发,前后端数据技术,3D打印技术剖析。 3169

VSCode中Markdown 无法显示图片

vscode需要打开 markdown文件和其引用的图片所在文件夹。

givbw的博客 1万+

Markdown中图片转PDF之后图片不能显示的问题(已解决)

Markdown中图片转PDF之后图片不能显示的问题(已解决)

qq_69410429的博客 5130

解决导入markdown时本地图片无法显示问题——图床

解决导入markdown时本地图片无法显示问题——图床 图床工具: PicGo 图片服务器:Gitee 辅助工具:Node.js 14.17.6 图床: 一般是指储存图片的服务器,有国内和国外之分。国外的图床由于有空间距离等因素决定了访问速度很慢,影响图片显示速度。国内也分为单线空间、多线空间和cdn加速三种。 图片服务器可选七牛云, 阿里云 OSS , gitee ,其中 gitee 给了 5 个 G 的空间,而且网络也快。 1、安装 PicGo 先下载 PicoGo ,下载地址:https://g

LoneJade_的博客 5564
上一篇: FBX vs GLTF:Three.js项目到底该选哪种格式?从加载速度到动画支持全面对比
下一篇: 避坑指南:MRtrix3预处理中Gibbs伪影校正与运动补偿的5个关键参数设置
docker8compose
博客等级 码龄1天 0粉丝 1102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值