背景
最近在找工作,闲来无事,准备把之前的写学习的笔记上传到CSDN上。看到CSDN发布界面上有导入markdown文件功能,试了一下发现图片不能显示
报错:“外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8OFzPsM-1689014504327)(imgs/image-20230710023504050.png)”。
想了一下CSDN编辑界面应该是读不到我本地的图片,所以做了个本地上传到图床的工具
现在支持上传的文件服务器:ftp,gitee,csdn。
-
使用csdn图床,需要在app.properties中配置自己的upload.csdn.cookie=
注: CSDN作为上传服务,不修改cookie生成水印不是自己的
-
使用gitee图床,可以参照这篇文章:利用Gitee搭建免费图床(详细教程)
-
使用ftp作为图床,需要有服务器,配置ftp服务,并且配置nginx直接访问ftp文件储存路径
附上码云gitee地址
运行图
-
Typora上传图片自定义命令程序运行结果
-
上传图片并生成新文件窗口运行程序
-
上传图片并生成新文件控制台运行程序
版本迭代
1.0.0版本:
- 上传到图床,替换成Html的标签并生成新文件; ;
- 上传到图床,替换成新URL并生成新文件;
- 下载图片到本地,替换成本地URL并生成新文件;
- 只下载到本地;
2.0.0版本:
- 新增GUI窗口
2.1.1版本:
- 新增typora自定义命令上传图片功能
- 不需要下载图床上传工具
安装教程
-
下载压缩包或安装包(由于我是win10,不可以打包mac安装程序,只能下载mdius-x.x.x-mac.tar.gz直接解压运行,或者自行下载源码打包)
-
解压或安装到到你中意的目录
-
linux/mac 安装或者解压后,注意授权安装文件夹为所有用户可读取写入 例: chmod 777 /opt/mdius,
-
找到conf目录下的配置文件,修改成你自己的git地址或ftp或CSDN配置信息
GUI界面/typora自定义上传/控制台 使用说明
启动不需要java环境,文件夹中有瘦身过后的jre
1.GUI界面使用
1.1. 点击mdius.exe启动
1.2. 选择功能
1.3. 输入本地文件夹路径(要读取的,有markdown文件的文件夹)
1.4. 输入你要替换的url,也就是你可以访问到的图片资源地址 (我这里是用csdn)
1.5. 选择上传服务的类型
1.6. 执行结束后会生成替换url的新文件
2.typora自定义上传命令使用
2.1. 找到conf目录下的app.properties中配置文件
-
设置默认上传服务 upload.type=
-
设置上传后返回的URL file.image_bed_url=
-
ftp/csdn/gitee配置
2.2. typora图像设置
-
默认上传服务命令:
@chcp 65001 >nul & cmd /d/s/c call "D:\Program Files\mdius\mdius-console-run.cmd" -upload
-
指定上传服务命令(服务配置见2.1):
@chcp 65001 >nul & cmd /d/s/c call "D:\Program Files\mdius\mdius-console-run.cmd" -upload -csdn
2.3. 点击[验证图片上传选项]按钮,验证成功后即可使用
3.控制台使用
3.1. 运行mdius-console-run.cmd/mdius-console-run.sh脚本
3.2. 选择功能
3.3. 输入本地文件夹路径(要读取的,有markdown文件的文件夹)
3.4. 输入你要替换的url,也就是你可以访问到的图片资源地址 (我这里是用ftp上传,然后用nginx设置的静态资源访问,当然也可以用gitee pages服务进行静态资源的访问)
3.5. 选择上传服务的类型
3.6. 执行结束后会生成替换url的新文件
项目结构
│
├─bin 启动脚本
│ mdius-console-run.cmd Windows系统启动脚本
│ mdius-console-run.sh MAC/Linux系统启动脚本
│
│
├─jre java运行环境
│
├─src
│ └─main
│ │
│ ├─java
│ │ └─cn
│ │ └─com
│ │ └─cloudpractice
│ │ │ MarkDownReplace.java 启动类
│ │ │
│ │ ├─download
│ │ │ ImageDownload.java 图片下载接口
│ │ │ PngImageDownload.java 图片下载实现类
│ │ │
│ │ ├─enums
│ │ │ ExecutionTypeEnum.java 执行器枚举
│ │ │ UplodeServerTypeEnum.java 上传服务类型枚举
│ │ │ OperationModeEnum.java 运行方式枚举
│ │ │ UploaderModeEnum.java 上传方式枚举
│ │ │
│ │ ├─execution
│ │ │ AbstractExecution.java 执行器抽象类
│ │ │ BeforeExecutionOperate.java 执行前操作接口
│ │ │ HtmlTagUploadImageGenerateNewFileExecution.java 上传图片,替换为Csdn可识别标签生成新文件执行器
│ │ │ LocalCopyImageGenerateNewFileExecution.java 下载到本地生成新文件执行器
│ │ │ OnlyDownloadToLocalExecutor.java 只下载到本地执行器
│ │ │ UploadImageGenerateNewFileExecution.java 上传图片生成新文件执行器
│ │ │ AbstractUploadExecution.java 控制台上传执行器抽象类
│ │ │ SimpleUploadExecution.java 基础控制台上传执行器实现类
│ │ │
│ │ ├─file
│ │ │ FileProcessing.java 文件处理接口
│ │ │ SimperFileProcessing.java 文件替换处理FileProcessing
│ │ │ HtmlTagSimperFileProcessing.java Html标签文件替换处理FileProcessing
│ │ │ TagProcessingInterface.java 标签处理接口
│ │ │
│ │ ├─system
│ │ │ ProgressBar.java 进度条
│ │ │ LogOutput.java 日志打印
│ │ │ AppSystem.java 应用系统信息
│ │ │
│ │ ├─propertie
│ │ │ AppProperties.java 应用配置类
│ │ │
│ │ ├─window
│ │ │ │
│ │ │ ├─option
│ │ │ │ CustomizeJOptionPane.java 自定义JOptionPane
│ │ │ │ NoWrapJTextPane.java 不换行JTextPane
│ │ │ │
│ │ │ └─panel
│ │ │ CsdnServerConfigPanel.java CSDN配置窗格
│ │ │ FilePathSelectPanel.java 文件路径选择窗格
│ │ │ FtpServerConfigPanel.java FTP配置窗格
│ │ │ FunctionalPanel.java 选择功能选择窗格
│ │ │ GiteeServerConfigPanel.java gitee配置窗格
│ │ │ ImageServerPanel.java 图片服务选择窗格
│ │ │ StartPanel.java 启动与日志窗格
│ │ │ MainWindow.java 主窗口
│ │ │
│ │ └─upload
│ │ FtpUploadImage.java FTP服务上传实现类
│ │ CsdnUploadImage。java Csdn上传实现类
│ │ GiteeUploadImage.java gitee上传实现类
│ │ UploadImage.java 图片上传接口
│ │
│ └─resources
│ ├─conf
│ │ app.properties 应用配置文件
│ │ log4j.properties 日志配置文件
│ └─images
│ main-window-icon.png Guiicon图片
│ bat_stop.png 停止按钮图片