📢文章已收录于我的博客,欢迎访问: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菜单->偏好设置->图像】中设置
🔑具体命令
java -jar [打包后的jar包位置]
💡typora会自己往命令后面添加参数(图片的位置),然后执行命令
🔑测试上传:点击“验证图片上传选项”按钮,等待上传后看到下图就表示上传成功了!
> 相关链接
🔗官方说明文档:https://support.typora.io/Upload-Image/
🔗参考
> 项目地址
项目已上传至GitHub和码云,求个小星星⭐