Typora+MinIO+Java代码打造舒适写作环境()

  本篇文章为你整理了Typora+MinIO+Java代码打造舒适写作环境()的详细内容,包含有 Typora+MinIO+Java代码打造舒适写作环境,希望能帮助你了解 Typora+MinIO+Java代码打造舒适写作环境。

  作者:IT王小二

  博客:https://itwxe.com

  前面小二介绍过使用Typora+PicGo+LskyPro打造舒适写作环境,那时候需要使用水印功能,但是小二在升级LskyPro2.x版本发现有很多不如人意的东西,遂弃用LskyPro使用MinIO结合代码实现自己需要的图床功能,也适合以后扩展功能。

  安装MinIO

  安装参考MinIO官网,或者参考小二的博客,搜索关键词 → Linux安装MinIO。

  安装完成之后使用域名映射好后台服务,小二使用nginx配置域名,配置参考如下。

  

 server {

 

   listen 443 ssl;

   server_name minio.itwxe.com;

   include /usr/local/nginx/conf/conf.d/common.conf;

   access_log logs/minioAccess.log;

   location / {

   proxy_pass http://127.0.0.1:9000;

   proxy_set_header Host $host;

   proxy_set_header X-Real-IP $remote_addr;

   server {

   listen 443 ssl;

   server_name minio-console.itwxe.com;

   include /usr/local/nginx/conf/conf.d/common.conf;

   access_log logs/minioAccess.log;

   location / {

   proxy_pass http://127.0.0.1:9020;

   proxy_set_header Host $host;

   proxy_set_header X-Real-IP $remote_addr;

  

 

  其中common.conf为域名通用配置。

  

 ssl_certificate /usr/local/nginx/ssl/fullchain.crt;

 

   ssl_certificate_key /usr/local/nginx/ssl/itwxe.com.key;

   ssl_session_cache shared:SSL:1m;

   ssl_session_timeout 30m;

   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

   ssl_ciphers HIGH:!aNULL:!MD5:!EXPORT56:!EXP;

   ssl_prefer_server_ciphers on;

   proxy_connect_timeout 500;

   proxy_send_timeout 500;

   proxy_read_timeout 500;

   client_max_body_size 100m;

  

 

  配置好之后访问https://minio-console.itwxe.com即可访问后台。

  同时为了存储桶图片所有人可以访问,需要将存储桶设置为公开。

  Java代码上传图片

  Java代码为个人定制使用,仅供参考,整体项目目录结构。

  使用maven搭建Java项目,引入依赖,pom.xml如下。

  

 ?xml version="1.0" encoding="UTF-8"? 

 

   project xmlns="http://maven.apache.org/POM/4.0.0"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"

   modelVersion 4.0.0 /modelVersion

   groupId com.itwxe /groupId

   artifactId minio-typora /artifactId

   version 1.0-SNAPSHOT /version

   properties

   maven.compiler.source 8 /maven.compiler.source

   maven.compiler.target 8 /maven.compiler.target

   /properties

   dependencies

   !-- minio --

   dependency

   groupId io.minio /groupId

   artifactId minio /artifactId

   version 8.4.4 /version

   /dependency

   /dependencies

  
groupId org.springframework.boot /groupId

   artifactId spring-boot-maven-plugin /artifactId

   executions

   execution

   goals

   goal repackage /goal

   /goals

   /execution

   /executions

   /plugin

   /plugins

   /build

   /project

  

 

  增加配置类MinioConfig。

  

package com.itwxe.config;

 

   * @author itwxe

   * @since 2022/9/29

  public class MinioConfig {

   * 请求地址,需修改成自己的服务地址

   public static final String ENDPOINT = "https://minio.itwxe.com";

   * 用户名,需修改为自己的用户名

   public static final String ACCESS_KEY = "admin";

   * 秘钥,需修改为自己的密码

   public static final String SECRET_KEY = "12345678";

   * 存储桶名称

   public static final String BUCKET = "img";

  

 

  增加主类进行图片上传。

  

package com.itwxe;

 

  import com.itwxe.config.MinioConfig;

  import io.minio.MinioClient;

  import io.minio.UploadObjectArgs;

  import java.time.LocalDateTime;

  import java.time.ZoneOffset;

   * @author itwxe

   * @since 2022/9/29

  public class MinioTyporaApplication {

   * 博客图片子路径

   private static final String IMG_DIR = "blog";

   public static void main(String[] args) {

   try {

   // 使用MinIO服务器平台、其访问密钥和密钥创建minioClient。

   MinioClient minioClient = MinioClient.builder()

   .endpoint(MinioConfig.ENDPOINT)

   .credentials(MinioConfig.ACCESS_KEY, MinioConfig.SECRET_KEY)

   .build();

   // 博客文章唯一链接id

   String blogPermalink = args[0];

   if (blogPermalink.length() != 8) {

   System.out.println("文章唯一id未设置!");

   return;

   // 循环上传图片

   for (int i = 1; i args.length; i++) {

   String arg = args[i];

   // 生成自定义文件名, 规则为博客唯一链接id_时间戳+随机2位数

   String fileSuffix = arg.substring(arg.lastIndexOf("."));

   String fileName = String.format("%s_%s%02d%s", blogPermalink, LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(), (int) (Math.random() * 100), fileSuffix);

   // 上传图片

   minioClient.uploadObject(UploadObjectArgs.builder()

   .bucket(MinioConfig.BUCKET)

   .object(String.format("/%s/%s", IMG_DIR, fileName))

   .filename(arg)

   .build());

   // 打印出来的字符会返回给typora

   System.out.println(String.format("%s/%s/%s/%s", MinioConfig.ENDPOINT, MinioConfig.BUCKET, IMG_DIR, fileName));

   } catch (Exception e) {

   e.printStackTrace();

   } finally {

   System.exit(0);

  

 

  typora测试上传图片

  为方便使用,使用mvn clean package打包成jar包,打开typora,偏好设置 - 图像设置。

  

java -jar /Users/itwxe/minio-typora.jar fd52d52a

 

  

 

  其中 /Users/itwxe/minio-typora.jar 为jar包路径,fd52d52a为小二个人定制的文章唯一id。

  点击验证图片上传选项,正常返回测试路径,同时图片浏览器可以访问则代表成功。

  以上就是Typora+MinIO+Java代码打造舒适写作环境()的详细内容,想要了解更多 Typora+MinIO+Java代码打造舒适写作环境的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: