开源项目分享: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 支持一下!也欢迎在评论区分享你的使用体验和建议。

相关推荐
平头哥技术团队4 分钟前
Day 16 | 用 ul、ol、li 一个标签,把散资料收成有序的技能清单页
开发语言·前端·html·html5
代码青铜z12 分钟前
不会写代码做小程序,模板开发和AI 编程靠谱吗?创业前先看这 5 件事
前端
小傅哥18 分钟前
Java + DDD,1:1 复刻 Deepseek Harness 项目
前端·后端·ai编程
积硅步致千里26 分钟前
Word 里的 .wmf 其实是 EMF:一次 metafile 转 PNG 排障
前端·后端
mayaairi32 分钟前
Vue2 组件通讯(二):ref、自定义事件与provide/inject实战
前端·javascript·vue.js
开开心心就好42 分钟前
PDF图片去水印软件,支持批量处理页面
前端·javascript·人工智能·智能手机·pdf·语音识别
爱敲代码的小杨.1 小时前
【Spring】Spring Web MVC
前端·spring·mvc
我的世界洛天依1 小时前
【胡桃讲编程】JS 入门第 1 课:Hello World,开启你的 JavaScript 编程之旅
javascript
是立不是利1 小时前
深入理解JavaScript事件委托
开发语言·前端·javascript
晴天161 小时前
React 版本迭代解析:从15到19 核心差异-Day40
前端·react.js·前端框架