一直想用typeora来写文章,可惜图床一直用的是又拍云的赞助
每次打开手动上传很麻烦,随便撸了一个,记录下
特点
这个每次上传会检查远程,如果有的文件,可以直接去重上传
简易说明
用之前记得把相关的对应参数填好
对于typora来说,返回值没有什么格式,只要包含远程的图片
他会自己提取
operator和password 在又拍云 -> 云存储 -> 功能配置 -> 存储管理,最下方,指定操作员
特别感谢
又拍云赞助的博客图床
食用方法:
用go build 生成可执行或者直接在typora设置里设置为 go run 路径/main.go 皆可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| package main
import ( "crypto/md5" "fmt" "io" "os" "path/filepath"
"github.com/upyun/go-sdk/v3/upyun" )
var ( Bucket string = "" Operator string = "" Password string = "" Url string = "" Path string = "" )
func GetFileMd5(pathName string) string { f, err := os.Open(pathName) if err != nil { fmt.Println("读取文件失败", err) return "" } defer f.Close()
md5hash := md5.New() if _, err := io.Copy(md5hash, f); err != nil { fmt.Println("读取文件md5失败", err) return "" }
return fmt.Sprintf("%x", md5hash.Sum(nil)) }
func main() {
picPathSet := os.Args[1:]
up := upyun.NewUpYun(&upyun.UpYunConfig{ Bucket: Bucket, Operator: Operator, Password: Password, })
for _, img := range picPathSet { md5 := GetFileMd5(img) ext := filepath.Ext(img) filename := Path + "/" + md5[:8] + "/" + md5[9:] + ext
_, e := up.GetInfo(filename) if e == nil { fmt.Println(Url + "/" + filename) continue }
err := up.Put(&upyun.PutObjectConfig{ Path: filename, LocalPath: img, })
if err != nil { fmt.Println("文件"+img+"上传失败", err) } fmt.Println(Url + "/" + filename) } fmt.Println("success") }
|