自定义Typora上传图片-Java实现


📢文章已收录于我的博客,欢迎访问:https://keyhuy.gitee.io/posts/202304019e89a11316fd

> 创建项目

💡下面只粘出部分代码,完整项目见【项目地址👇

0️⃣.创建空的Maven项目:在idea创建一个简单的Maven项目就完事

1️⃣.导入依赖:这里用七牛云做图床,导入七牛云sdk的依赖,其他OSS的话导入相应依赖即可

<!--七牛云OSS-->
<dependency>
    <groupId>com.qiniu</groupId>
    <artifactId>qiniu-java-sdk</artifactId>
    <version>7.2.7</version>
</dependency>

2️⃣.上传图片类(关键):编写上传图片的具体逻辑,除了七牛云,也可以添加其他OSS的sdk,加一个方法即可

public class TyporaUpload {

    /**
     * 上传到七牛云
     */
    public String upload2QiNiuYun(String localFilePath) throws Exception {

        // 获取七牛云域名
        String endPoint = "https://qiniuyun.keyhuy.top";
        // 空间名
        String bucketName = "key-cdn";
        // 水印代码
        String watermark = "imageMogr2/blur/1x0/quality/75|watermark/2/text/QOi8nemVv-WFreWKoDE=/font/5b6u6L2v6ZuF6buR/fontsize/300/fill/I0FDQTlBOQ==/dissolve/51/gravity/SouthEast/dx/10/dy/5";

        // 密钥文件位置
        InputStream resource = this.getClass().getResourceAsStream("/cert/qiniuyun-oss.key");
        if (null == resource) {
            throw new RuntimeException("上传失败");
        }
        // 读取密钥
        List<String> keys = new ArrayList<>(2);
        Scanner sc = new Scanner(resource);
        while (sc.hasNextLine()) {
            keys.add(sc.nextLine());
        }

        // 密钥设置
        Auth auth = Auth.create(keys.get(0), keys.get(1));
        // 上传管理对象,华南用的是zone2
        UploadManager uploadManager =
                new UploadManager(new Configuration(Zone.zone2()));

        // 获取原始文件名
        String originalName = FileUtils.getOriginalNameByPath(localFilePath);
        if (null == originalName) {
            throw new RuntimeException("文件路径不合法");
        }

        // 生成最终的文件名
        String filename = FileUtils.createFilename(
                "images/blog-imgs/",
                originalName);

        if (null == filename) {
            // 文件格式不合法
            throw new RuntimeException("文件格式不合法");
        }

        // 调用put方法上传,简单上传,直接根据文件路径上传
        Response resp = uploadManager.put(localFilePath, filename,
                auth.uploadToken(bucketName));

        if (resp.isOK() && resp.isJson()) {
            // 上传成功,返回文件路径+水印
            return endPoint + "/" + filename + "?" + watermark;
        }

        // 上传失败或格式错误
        return null;
    }

    /*上传到其他oss*/
}

💡上面涉及的参数(域名、空间名、水印代码)需要提前在七牛云(或其他OSS)中设置好,密钥在OSS官网可以查看

3️⃣.主函数

public class Main {
    public static void main(String[] args) {
        if (args.length != 0) {
            List<String> urls = new ArrayList<>();
            TyporaUpload typoraUpload = new TyporaUpload();
            try {
                // 遍历文件路径
                for (String localFilePath : args) {
                    urls.add(typoraUpload.upload2QiNiuYun(localFilePath));
                }
                // 上传完成,打印
                System.out.println("Upload Success:");
                urls.forEach(System.out :: println);
            } catch (Exception e) {
                // 上传失败
                System.out.println("Upload Fail:" + e.getMessage());
            }
        } else {
            // 没有文件上传
            System.out.println("No File Upload");
        }
    }
}

4️⃣.打包成jar包:网上教程一抓一大把,比如【参考链接👇】,打包后的jar包找个位置放好就行


> Typora配置

🔑配置方式:在【typora菜单->偏好设置->图像】中设置
typora-upload-setting

🔑具体命令

java -jar [打包后的jar包位置]

💡typora会自己往命令后面添加参数(图片的位置),然后执行命令

🔑测试上传:点击“验证图片上传选项”按钮,等待上传后看到下图就表示上传成功了!
upload-success


> 相关链接

🔗七牛云https://portal.qiniu.com

🔗官方说明文档https://support.typora.io/Upload-Image/

🔗参考


> 项目地址

项目已上传至GitHub和码云,求个小星星⭐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值