Skip to content
nodejs操作gitee图床上传更新和删除

新建文件夹

使用vscode打开当前文件夹

初始化项目

js
npm init-y

安装axios

js
npm install axios

根目录下放个图片文件,如aaa.png

在根目录下创建app.js文件

输入以下内容

js
console.log(11111)

运行项目

js
node ./app.js

终端只要打印出111就代表项目创建完成了

创建token令牌

点击查看这篇文章创建令牌方法即可

新建仓库,一定要是开源的(仓库路径格式)

如创建仓库填写,名称如foodSpeedOrderImg,但是路径自动转换为了food-speed-order-img,切记,后续只要是需要填写仓库路径的都要选择food-speed-order-img

上传图片

js
const axios = require("axios");
const fs = require("fs");

const giteeToken = "XXXXXX"; // 替换成你的Gitee Token
const owner = "XXXXXX"; // 替换成你的Gitee用户名(仓库个人主页姓名下面的@后面的值)
const repo = "XXXX"; // 替换成你的Gitee仓库路径(创建仓库时的path,驼峰命名的话为全小写,中间用短横线连接)
const path = "web/hahaha6.png"; // 替换成你想要保存图片的路径和文件名
const message = "提交信息"; // 你想要的提交信息

const url = `https://gitee.com/api/v5/repos/${owner}/${repo}/contents/${path}`;

const content = fs.readFileSync("./aaa.png", { encoding: "base64" }); // 读取本地图片文件

const config = {
  headers: {
    "Content-Type": "application/json",
    "User-Agent": "Node.js",
    Authorization: `token ${giteeToken}`,
  },
};

const getData = async () => {
  const data = {
    access_token: giteeToken,
    content: content,
    branch: "master",
    message: message
  };
  axios
    .post(url, data, config)
    .then((response) => {
      console.log("图片上传成功:", response.data);
    })
    .catch((error) => {
      console.error(
        "图片上传失败:",
        error.response ? error.response.data : error
      );
    });
    console.log('data',data);
};

getData();

更新图片(路径不变,图片更新掉)

js
const axios = require("axios");
const fs = require("fs");

const giteeToken = "XXXXXX"; // 替换成你的Gitee Token
const owner = "XXXXXXXX"; // 替换成你的Gitee用户名(仓库个人主页姓名下面的@后面的值)
const repo = "XXXX"; // 替换成你的Gitee仓库路径(创建仓库时的path,驼峰命名的话为全小写,中间用短横线连接)
const path = "hahaha.png"; // 替换成你想要更新图片的路径和文件名(要跟被替换的图片文件名保持一致)
const message = "提交信息"; // 你想要的提交信息

const url = `https://gitee.com/api/v5/repos/${owner}/${repo}/contents/${path}`;

const content = fs.readFileSync("./qqqq.jpg", { encoding: "base64" }); // 读取本地图片文件

const config = {
  headers: {
    "Content-Type": "application/json",
    "User-Agent": "Node.js",
    Authorization: `token ${giteeToken}`,
  },
};

const getData = async () => {
  // 提取前端传入的链接https://gitee.com/xiaojisengren/food-speed-order-img/raw/master/hahaha4.png
  // 找到里面的用户名,仓库名和文件路径,并将其改成url基础路径格式进行匹配
  let res = await axios.get(
    "https://gitee.com/api/v5/repos/xiaojisengren/food-speed-order-img/contents/hahaha4.png"
  );

  // content为base64格式图片
  const data = {
    access_token: giteeToken,
    content: content,
    message: message,
    sha: res.data.sha,
  };
  // 将指定sha值的文件替换为上传的图片
  // 更新图片
  axios
    .put(url, data, config)
    .then((response) => {
      console.log("图片更新成功:", response.data);
    })
    .catch((error) => {
      console.error(
        "图片更新失败:",
        error.response ? error.response.data : error
      );
    });
  console.log("data", data);
};

getData();

删除图片

js
const axios = require("axios");
const fs = require("fs");

const giteeToken = "XXXXXX"; // 替换成你的Gitee Token
const owner = "XXXXX"; // // 替换成你的Gitee用户名(仓库个人主页姓名下面的@后面的值)
const repo = "XXXXXXXX"; // 替换成你的Gitee仓库路径(创建仓库时的path,驼峰命名的话为全小写,中间用短横线连接)
const path = "hahaha4.png"; // 替换成你想要保存图片的路径和文件名
const message = "提交信息"; // 你想要的提交信息

// 基础url地址
const url = `https://gitee.com/api/v5/repos/${owner}/${repo}/contents/${path}`;

// 请求头信息
const config = {
  headers: {
    "Content-Type": "application/json",
    "User-Agent": "Node.js",
    Authorization: `token ${giteeToken}`,
  },
};

const getData = async () => {
  // 提取前端传入的链接https://gitee.com/xiaojisengren/food-speed-order-img/raw/master/hahaha4.png
  // 找到里面的用户名,仓库名和文件路径,并将其改成url基础路径格式进行匹配
  // 用于获取被删除文件的sha
  // 有了sha值,就可以删除图片了,相当于唯一的id值
  let res = await axios.get(
    "https://gitee.com/api/v5/repos/xiaojisengren/food-speed-order-img/contents/hahaha4.png"
  );

  // 传递参数token,提交信息,sha值
  const data = {
    access_token: giteeToken,
    message: message,
    sha: res.data.sha,
  };
  // 将指定sha值的文件替换为删除的图片
  // 删除图片
  axios
    .delete(url, {
      headers: config.headers,
      params: data,
    })
    .then((response) => {
      console.log("图片删除成功:", response.data);
    })
    .catch((error) => {
      console.error(
        "图片删除失败:",
        error.response ? error.response.data : error
      );
    });
};

getData();

gitee的Api文档