数据库中图片保存绝对路径和相对路径的讨论
一、问题
1新的项目
前端代码:采用visual studio code开发,采用以vue.js为基础的框架,最常用组件库 Element-UI。 编辑器采用 tinymce。
后端代码:采用microsoft visual studio开发, 采用webapi和 mvc两种框架。 图片上传采用mvc。
2问题:前端 tinymce和 后端图片上传部分出问题。本机测试时编辑器存库内容中图片为绝对路径。但是发布到测试机 编辑器存库内容中图片为相对地址。于是问题来了,同样的代码为什么会出现这种情况。
3前辈说:图片要保存为绝对地址,不然以后图片独立放到一台服务器后会出现问题。前辈解释了很久,我也没听懂。。
二、不懂的原因
1 tinymce上次图片后显示的地址,是后端程序返回给它的。也就是所tinymce上次图片后显示的地址是后台程序返回的,而不是客户计算机图片所在位置的地址。 但是后台代码每次返回的都是绝对路径,为什么到前端就变成相对的了?
2、tinymce 本机测试和测试机表现有差异,解决方法:初始化时配置 relative_urls: false。
3 因为MVC时期 前端代码和后端代码是在一起的,但现在前后端代码几乎完全分离。 虽然图片上传目前还是MVC方式实现的但以后可能也会改为webapi实现。 以后图片也可能独立放到一台服务器,那么前后代码、后端代码、图片数据 将会是完全分离的。到时候就会发现相对路径无法访问图片了。 绝对路径可以避免以后出现这些问题。
4 如果保存图片服务器的ip或端口变了怎么办? 难道去数据库修改所有ip或端口。答:更新相对固定的ip或端口是比较简单的。
5 任何人都可以访问这些图片,甚至不用登录!! 这个本项目不考虑,以后如果需要可以建个FTP资源管理器专门用来存储图片资源,FTP可以设置哪些用户组可以访问资源 ,这样只有知道这个用户和密码的人才能图片资源服务器。