如何将Typora中的图片上传到博客园?

摘要:Typora 图像上传功能 适配入口 在 Typora 的选项栏中,文件→偏好设置→图像→上传服务设定,其中可以看到官方提供了几种不同的图片上传服务,其中最底下还预留了一个 [自定义命令],这个可以留给我们自己适配,因此很容易联想到博客园的
Typora 图像上传功能 适配入口 在 Typora 的选项栏中,文件→偏好设置→图像→上传服务设定,其中可以看到官方提供了几种不同的图片上传服务,其中最底下还预留了一个 [自定义命令],这个可以留给我们自己适配,因此很容易联想到博客园的图片上传服务能否适配? 适配教程 如何完成适配呢?可以看到下方有一个说明链接 点开后可以看到在 custom 章节中,官方文档指出: 简单理解就是可以自行写一个脚本,然后通过命令行参数接收来自 Typora 的图片本地路径即可,如果有很多张图片,可以多次调用。 此外,官方还提供了可能出现的问题及解决方法。 适配脚本 我们知道博客园开发了 vscode 插件是可以提供图片上传功能的,那么主要用到的是什么接口呢? 这里主要用的就是 MetaWeblog API ,它支持上传图片、发布文章。 在博客园后台的设置中,最底下有: 我们将 “允许 MetaWeblog 博客客户端访问” 设置为开启,于是可以得到: MetaWeblog登录名【USERNAME】 MetaWeblog访问令牌【PASSWORD】 MetaWeblog访问地址【BLOG_URL】 这些参数就是每个人独立的接口参数,于是向豆包咨询后,得到下面的代码: #!/bin/bash set -euo pipefail # ==================== 你的配置 ==================== BLOG_URL="你的MetaWeblog" USERNAME="你的MetaWeblog登录名" PASSWORD="你的MetaWeblog访问令牌" BLOG_ID="你的博客园用户目录路径,如https://www.cnblogs.com/gshang,就是 gshang" # ================================================== echo "Upload Success:" for img_path in "$@"; do # 转换路径 [[ "$img_path" == [A-Za-z]:\\* ]] && img_path=$(cygpath -u "$img_path") # 基础信息 filename=$(basename "$img_path") mime=$(file -b --mime-type "$img_path") # 【关键修复】用临时文件,避免参数过长 xml_file=$(mktemp) # 写入 XML(不从命令行传,彻底解决超长) cat > "$xml_file" <<EOF <?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>metaWeblog.newMediaObject</methodName> <params> <param><value><string>${BLOG_ID}</string></value></param> <param><value><string>${USERNAME}</string></value></param> <param><value><string>${PASSWORD}</string></value></param> <param><value><struct> <member><name>name</name><value><string>${filename}</string></value></member> <member><name>type</name><value><string>${mime}</string></value></member> <member><name>bits</name><value><base64>$(base64 -w 0 "$img_path")</base64></value></member> </struct></value></param> </params> </methodCall> EOF # 【关键修复】从文件读取 XML,不拼命令行 resp=$(curl -s -X POST \ -H "Content-Type: text/xml; charset=utf-8" \ --data-binary "@$xml_file" \ "$BLOG_URL") # 提取 URL(100% 兼容 Windows) url=$(echo "$resp" | sed -n 's/.*<string>\(https[^<]*\)<\/string>.*/\1/p' | head -1) # 输出给 Typora [ -n "$url" ] && echo "$url" || echo "" # 清理临时文件 rm -f "$xml_file" done 将你的信息填写后,保存为 cnblogs.sh ,并将其放到 Typora.exe 同一目录下,我的目录是: D:\Program Files\Typora\cnblogs.sh 最后,确保你已经安装了 git-bash ,想必作为程序员应该都装了的。我的安装目录是 D:\Program Files\Git\bin\bash.exe 于是我们得到最终输入给 Typora 的命令行: "D:\Program Files\Git\bin\bash.exe" "D:\Program Files\Typora\cnblogs.sh" 点击 "验证图片上传选项" ,可以看到图片上传成功: 日常使用测试 在 Typora 中提供了两种上传图片的形式: 单张图片上传 图片选中后,右键可以上传当前图片。 批量上传 博客写完后,图片太多可以在顶部选项栏中,格式→图像→上传所有本地图片 ,点击后一次性全部上传。