通过Fckeditor把图片上传到独立图片服务器的方法
在图片服务器和后台服务器分别部署Fckeditor,通过修改BasePath指向远程资源、开启上传功能并利用子域跨域方案,实现将图片直接上传至独立图片服务器,返回相对路径,支持按模块区分存储位置。
其实,要解决跨服务器图片上传的问题,思路无非那么几条,咱们挨个捋一捋。
第一种,直接在图片服务器上开FTP,人为手动添加图片地址。这办法简单粗暴,但体验极差——尤其在可视化编辑器里看图,还得另开窗口操作,流程割裂,基本不可取。
第二种,同样在图片服务器上开FTP,但让IIS执行DOS Shell去访问FTP。这招技术上可行,但安全风险太高,等于把服务器大门敞开了一条缝,生产环境里谁敢这么干?
第三种,在图片服务器上直接部署IIS,让后台Web程序通过跨域请求访问。这么做虽然解决了查看问题,但编辑器里依然不方便预览,得靠JS在上传后自动把图片地址追加到编辑窗口,而且需要单独写一套上传程序,改动量不小。
第四种,直接利用现有在线编辑器自带的文件上传功能。这是最理想的方向——成熟、稳定、无需重复造轮子。
第三、四种方案靠谱,但都绕不开跨域问题。第三种还得单独写程序,改动太大,所以第四种就成了最优解。
那么,具体该怎么落地?之前用的后台编辑器是dvbbs自带的,这次决定换成FCKeditor。虽然对FCKeditor不算特别熟,但折腾了一天,总算跑通了。下面把关键步骤拆开来说。
第一步:双端部署
在图片服务器(img.jb51.net)和后台服务器(gl.cdbs.com.cn)上都装上FCKeditor。注意,后台服务器其实只需要一个fckeditor.asp文件,因为ASP不能直接include外网文件,所以后台只做入口,真正的编辑器资源从图片服务器加载。
第二步:设置BasePath
在后台程序中,把sBasePath指向图片服务器上的FCKeditor目录:
<%
Dim sBasePath
sBasePath="http://img.jb51.net/fckeditor/"
Dim oFCKeditor
Set oFCKeditor = New FCKeditor
oFCKeditor.BasePath = sBasePath
oFCKeditor.Config("SkinPath") = sBasePath + "editor/skins/silver/" '设置皮肤
'oFCKeditor.Width="80%"
oFCKeditor.Height="400px"
oFCKeditor.Value = ""
oFCKeditor.Create "FCKeditor1"
%>
这样一来,编辑器本身就不需要本地部署了,直接调用远程服务器的资源。
第三步:修改fckconfig.js
在图片服务器上编辑FCKeditor根目录下的fckconfig.js,把文件上传的语言改成ASP:
var _FileBrowserLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'asp' ; // asp | aspx | cfm | lasso | perl | php | py
这一步决定了上传功能调用的后端脚本类型。
第四步:配置connector
打开图片服务器上的 fckeditor/editor/filemanager/connectors/asp/config.asp,把 ConfigIsEnabled 设为 true。这是开启上传功能的前提,很多人卡在这一步忘了改。
第五步:解决跨域
核心问题来了。后台和图片服务器域名不同,浏览器的同源策略会拦截操作。如果两个域名属于同一主域(比如都是cdbs.com.cn下的子域),可以用 document.domain='cdbs.com.cn' 搞定。如果域名完全不同,那就要上JSONP或CORS了,本文以子域方案为例。
第六步:安全加固(待完善)
目前跨域上传已经能跑通,但还缺一道安全防线——需要通过跨站Cookie判断当前用户是否有上传权限。这部分逻辑需要单独实现,后面再补上。
最终效果是:在后台编辑器中上传图片,图片会直接存到指定的图片服务器上,返回的地址是相对路径。我们可以通过记录当前模块对应的图片服务器组来区分存储位置。比如“新闻发布”模块用一组服务器,“图片展示”模块用另一组。
但必须承认,这种方案对“一个标题对应多个媒体文件”的场景(比如相册、音乐专辑)并不友好——每个文件都需要独立处理上传和关联,这时候还是得写专门的上传程序。至于怎么实现,那就是另一个话题了。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。
CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。
Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。
CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。
Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。



























