开源项目分享:123 网盘 SDK - npm包已发布

前言

大家好!今天想和大家分享一个我最近开源的项目:123 网盘 SDK 。这个项目前几天在 GitHub 开源,现在已经发布到 NPM,可以通过 npm i @ked3/pan123-sdk 直接安装使用。

项目背景:为什么要开发这个 SDK?

在使用 123 网盘官方 API 的过程中,我发现文件上传流程异常复杂,需要调用多个接口:

  1. 创建文件
  2. 获取上传地址和上传分片
  3. 列举已上传分片
  4. 完成上传
  5. 异步轮询获取上传结果

这种复杂的流程对开发者来说非常不友好,每次都要重复编写大量的代码。于是我决定开发一个简单易用的 SDK,让开发者能够通过几行代码就完成文件操作。

✨ 核心特性

经过不断的迭代和完善,这个 SDK 现在具备了以下核心特性:

🚀 api更新

  • 上传文件
  • 获取文件夹内容
  • 获取文件详情 (2025-05-29)
  • 获取文件下载链接
  • 在线解压文件
  • 获取直链链接 ,启用直链,禁用直链 (2025-06-02) v1.0.7

📦 智能分片上传

  • 自动处理大文件分片上传
  • 上传进度跟踪

🔄 秒传检测

  • 支持文件 MD5 校验
  • 智能识别重复文件
  • 提升上传效率

🌐 多环境兼容

  • 支持 CommonJS 和 ES Module
  • Node.js 环境原生支持
  • 完善的 TypeScript 类型定义

🔐 安全可靠

  • 基于 clientId 和 clientSecret 的安全认证
  • 自动 token 管理和刷新
  • 内置错误重试机制

📦 安装使用

安装

bash 复制代码
npm install @ked3/pan123-sdk

基础使用

ES Module 方式

javascript 复制代码
import Pan123SDK from "@ked3/pan123-sdk";

const sdk = new Pan123SDK({
  clientId: "your_client_id",
  clientSecret: "your_client_secret",
});

// 初始化 token
await sdk.initToken();

// 上传文件
const uploadResult = await sdk.uploadFile("./example.zip", {
  parentFileID: 0, // 父目录ID,0表示根目录
  containDir: false, // 是否包含目录结构
  duplicate: 1, // 重名处理策略:1-重命名,2-覆盖,3-跳过
});

// 获取文件列表
const fileList = await sdk.getFileList({
  parentFileId: 0,
  limit: 100,
  searchData: "",
  searchMode: 0,
  lastFileId: 0,
});

// 获取下载链接
const downloadUrl = await sdk.getFileDownloadUrl({
  fileId: "123456789",
});

CommonJS 方式

javascript 复制代码
const Pan123SDK = require("@ked3/pan123-sdk");

const sdk = new Pan123SDK({
  clientId: "xxx",
  clientSecret: "xxx",
});

async function main() {
  await sdk.initToken();

  const uploadResult = await sdk.uploadFile(filePath, {
    parentFileID: 14439872,
    containDir: false,
    duplicate: 2,
  });
}

main();

🔥 实用功能演示

在线解压功能

javascript 复制代码
// 解压 ZIP 文件到指定文件夹
const result = await sdk.zipFile({
  fileId: "123456789", // ZIP文件ID
  folderId: "987654321", // 解压目标文件夹ID
});

直链管理

javascript 复制代码
// 启用文件直链
await sdk.enableDirectLink(fileId);

// 获取直链地址
const directUrl = await sdk.getDirectLink(fileId);

// 禁用直链
await sdk.disableDirectLink(fileId);

🛠️ 技术实现亮点

1. 智能分片上传

SDK 内部实现了智能的分片上传逻辑,能够:

  • 根据文件大小自动决定是否分片
  • 并发上传多个分片提升速度
  • 自动重试失败的分片
  • 实时反馈上传进度

2. Token 自动管理

  • 自动获取和刷新 access_token
  • 内存缓存避免重复请求
  • 过期自动续期,无需手动处理

3. 错误处理机制

  • 网络错误自动重试

  • 详细的错误信息返回

  • 优雅的异常处理

🤝 参与贡献

这是一个开源项目,非常欢迎大家参与贡献:

  • 报告问题: 在 GitHub Issues 中反馈 bug
  • 功能建议: 提出新的功能需求
  • 代码贡献: 提交 Pull Request
  • 文档完善: 帮助改进文档和示例

总结

123 网盘 SDK 的诞生源于实际开发中的痛点,通过简化复杂的 API 调用流程,让开发者能够更专注于业务逻辑的实现。

如果你正在开发需要文件存储功能的应用,或者对 123 网盘 API 感兴趣,欢迎试用这个 SDK。相信它能为你的开发工作带来便利。

快速开始:

bash 复制代码
npm install @ked3/pan123-sdk

项目地址: [GitHub Repository] NPM 包: @ked3/pan123-sdk


如果这个项目对你有帮助,别忘了给个 ⭐ Star 支持一下!也欢迎在评论区分享你的使用体验和建议。

相关推荐
吃饭最爱2 分钟前
html的基础知识
前端·html
我没想到原来他们都是一堆坏人3 分钟前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
前端Hardy24 分钟前
HTML&CSS:有趣的漂流瓶
前端·javascript·css
前端Hardy26 分钟前
HTML&CSS :惊艳 UI 必备!卡片堆叠动画
前端·javascript·css
无羡仙1 小时前
替代 Object.freeze 的精准只读模式
前端·javascript
web前端1231 小时前
Java客户端开发指南 - 与Web开发对比分析
前端
龙在天1 小时前
前端 9大 设计模式
前端
搞个锤子哟1 小时前
网站页面放大缩小带来的问题
前端
hj5914_前端新手1 小时前
React 基础 - useState、useContext/createContext
前端·react.js
半花1 小时前
【Vue】defineProps、defineEmits 和 defineExpose
前端·vue.js