TinyMCE添加图片 路径自动处理成相对路径

本文介绍在Vue中使用TinyMCE编辑器时,如何解决图片路径转换问题,通过设置convert_urls参数为false,可以确保图片路径包含域名,避免转换为相对路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在vue中使TinyMCE编辑器。在往编辑器插入图片,保存后,数据库中的图片路径下会自动转换你的图片路径如:

转换:

/path/name.jpg

为../path/name.jpg

带有域名的路径也会被转换为相对路径。如何让路径带域名呢?

只要在初始化时候,多添加一个参数就ok了:

tinymce.init({

selector: 'textarea', // change this value according to your HTML

convert_urls: false //这个参数加上去就可以了,路径就带域名了

});

更多参考https://blog.youkuaiyun.com/huffmans/article/details/84381481


 

<think>嗯,用户提到在TinyMCE编辑器中使用图片路径带有“../”导致图片丢失的问题。首先我需要理解这个问题发生的背景。通常,当图片路径使用相对路径如“../images/photo.jpg”,这可能在上传或保存时被编辑器处理不当,导致路径被截断或无法正确解析。 接下来,我需要考虑可能的解决方案。根据之前引用的资料,比如引用[1]中提到的插件配置和引用[2]中的ImageMatch配置,可能需要检查TinyMCE的上传配置是否正确处理相对路径。例如,是否设置了正确的相对_urls选项,或者是否启用了convert_urls来防止路径转换。 另外,用户的问题可能涉及到后端接口的处理。如果后端接口返回的JSON中图片路径没有正确包含“../”部分,可能需要调整后端的路径处理逻辑,确保返回完整的相对路径或绝对路径。同时,前端可能需要配置image_list来指定正确的图片目录,避免路径丢失。 还要考虑存储路径的配置是否正确。如果图片存储在服务器的某个子目录下,可能需要设置document_base_url或relative_urls为true,以确保路径正确生。 此外,用户可能需要自定义处理上传后的图片路径,例如在保存时替换“../”为合适的路径结构,或者在后端处理时进行路径修正。跨域问题也可能导致路径错误,需要检查CORS设置是否正确。 最后,建议用户检查网络请求中的实际路径是否正确,使用开发者工具查看图片请求的URL,从而定位问题所在。结合之前的引用,比如引用[3]中提到TinyMCE在企业中的使用情况,可能需要确保配置的简单性和文档的准确性,帮助用户正确设置路径参数。</think>针对TinyMCE编辑器因图片路径包含$../$符号导致路径丢失的问题,以下是分步解决方案: ### 一、核心问题定位 当图片路径包含$../$时,可能触发以下问题: 1. 路径层级解析错误(如将`../uploads/image.jpg`误解析为根目录路径) 2. 安全策略过滤(某些框架自动过滤上级目录符号) 3. URL转换机制冲突(TinyMCE的`convert_urls`配置影响)[^1] ### 二、解决方案步骤 1. **禁用自动URL转换** 在编辑器初始化配置中添加: ```javascript tinymce.init({ convert_urls: false, // 关闭自动路径转换 relative_urls: true, // 保持相对路径 remove_script_host: false // 保留协议和域名 }); ``` 2. **配置API路径处理(Java Spring示例)** ```java // 文件上传接口添加路径保留逻辑 @PostMapping("/upload") public JSONResult upload(@RequestParam("file") MultipartFile file) { String path = "../uploads/" + UUID.randomUUID() + ".jpg"; // 保留../前缀 return JSONResult.ok().put("location", path); // 直接返回原始路径 } ``` 3. **前端添加路径修正逻辑** ```javascript // 在文件上传功回调中处理路径 images_upload_handler: function (blobInfo, success) { uploadFile(blobInfo.blob()).then(response => { let correctedPath = response.location.replace(/^\.\.\//, 'base/'); success(correctedPath); // 路径映射转换 }); } ``` 4. **Nginx反向代理配置** ```nginx location /base/ { alias /var/www/project/; # 将/base/映射到实际包含../的物理路径 rewrite ^/base/(.*) /$1 break; } ``` ### 三、验证方案 1. 在浏览器控制台检查网络请求: ```javascript // 查看实际请求路径 document.querySelectorAll('img').forEach(img => console.log(img.src)) ``` 2. 测试不同层级页面的路径表现: - 页面路径:`/article/detail?id=1` - 图片路径:`../uploads/image.jpg` - 预期访问路径:`http://domain.com/base/uploads/image.jpg` ### 四、补充说明 1. 使用$encodeURIComponent()$处理特殊符号: ```javascript // 上传前编码路径 const safePath = encodeURIComponent('../uploads/image.jpg'); ``` 2. 路径白名单配置(Spring Security示例): ```java http.authorizeRequests() .antMatchers("/base/uploads/**").permitAll() // 允许上级目录访问 .regexMatchers("^/(../)?uploads/.*").permitAll(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值