Bitzsoft.Integrations.CloudDrive.Nutstore
1.0.0-alpha.10
This is a prerelease version of Bitzsoft.Integrations.CloudDrive.Nutstore.
dotnet add package Bitzsoft.Integrations.CloudDrive.Nutstore --version 1.0.0-alpha.10
NuGet\Install-Package Bitzsoft.Integrations.CloudDrive.Nutstore -Version 1.0.0-alpha.10
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Bitzsoft.Integrations.CloudDrive.Nutstore" Version="1.0.0-alpha.10" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Bitzsoft.Integrations.CloudDrive.Nutstore" Version="1.0.0-alpha.10" />
<PackageReference Include="Bitzsoft.Integrations.CloudDrive.Nutstore" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Bitzsoft.Integrations.CloudDrive.Nutstore --version 1.0.0-alpha.10
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Bitzsoft.Integrations.CloudDrive.Nutstore, 1.0.0-alpha.10"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Bitzsoft.Integrations.CloudDrive.Nutstore@1.0.0-alpha.10
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Bitzsoft.Integrations.CloudDrive.Nutstore&version=1.0.0-alpha.10&prerelease
#tool nuget:?package=Bitzsoft.Integrations.CloudDrive.Nutstore&version=1.0.0-alpha.10&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Bitzsoft.Integrations.CloudDrive.Nutstore
坚果云企业网盘服务实现,基于 WebDAV 协议与坚果云服务端交互。
功能特性
- 基于 WebDAV 协议实现文件上传、下载、移动、复制、删除等基础操作
- 文件夹管理:支持文件夹创建、列举、删除
- NSDAV XML API:支持搜索、创建分享链接、文件夹 ACL 权限管理
- 认证方式:邮箱 + 应用专用密码(HTTP Basic Auth)
- 统一异常处理:WebDAV 错误自动映射为
CloudDriveException
安装
.NET CLI
dotnet add package Bitzsoft.Integrations.CloudDrive.Nutstore
PackageReference
<PackageReference Include="Bitzsoft.Integrations.CloudDrive.Nutstore" Version="1.0.0" />
配置
appsettings.json
{
"CloudDrive": {
"Nutstore": {
"AuthEmail": "your-email@example.com",
"AuthPassword": "your-app-password",
"BaseUrl": "https://dav.jianguoyun.com/dav/",
"RestApiUrl": "https://api.jianguoyun.com/v2/",
"HttpClientName": "NutstoreCloudDrive"
}
}
}
| 配置项 | 必填 | 默认值 | 说明 |
|---|---|---|---|
AuthEmail |
是 | -- | 坚果云账号邮箱 |
AuthPassword |
是 | -- | 应用专用密码(非登录密码) |
BaseUrl |
否 | https://dav.jianguoyun.com/dav/ |
WebDAV 服务基地址 |
RestApiUrl |
否 | https://api.jianguoyun.com/v2/ |
REST API 基地址 |
HttpClientName |
否 | NutstoreCloudDrive |
命名 HttpClient 名称 |
注册服务
从 IConfiguration 绑定(推荐)
using Bitzsoft.Integrations.CloudDrive.Nutstore;
builder.Services.AddBitzsoftNutstoreCloudDrive(
builder.Configuration.GetSection("CloudDrive:Nutstore"));
委托配置
builder.Services.AddBitzsoftNutstoreCloudDrive(options =>
{
options.AuthEmail = "your-email@example.com";
options.AuthPassword = "your-app-password";
});
使用示例
using Bitzsoft.Integrations.CloudDrive.Interfaces;
using Bitzsoft.Integrations.CloudDrive.Models;
public class MyService
{
private readonly ICloudDriveProvider _drive;
public MyService(ICloudDriveProvider drive) => _drive = drive;
public async Task UploadAndListAsync()
{
// 上传文件
await using var stream = File.OpenRead("report.pdf");
var upload = await _drive.UploadAsync(new UploadFileRequest
{
FolderId = "/documents",
FileName = "report.pdf",
Content = stream,
ContentType = "application/pdf"
});
// 列出文件夹内容
var files = await _drive.ListFilesAsync("/documents");
foreach (var file in files.Items)
{
Console.WriteLine($"{file.Name} ({file.Size} bytes)");
}
// 下载文件
var download = await _drive.DownloadAsync("/documents/report.pdf");
// 搜索文件(NSDAV XML API)
var results = await _drive.SearchAsync(new SearchFilesRequest
{
Keyword = "report"
});
// 创建分享链接
var link = await _drive.CreateShareLinkAsync(new CreateShareLinkRequest
{
FileId = "/documents/report.pdf",
AccessLevel = ShareLinkAccessLevel.View
});
// 文件夹 ACL 权限管理
var perms = await _drive.GetPermissionsAsync("/documents");
}
}
核心类型一览
| 类型 | 说明 |
|---|---|
NutstoreCloudDriveProvider |
坚果云实现(ProviderName = "Nutstore") |
NutstoreOptions |
配置选项(AuthEmail / AuthPassword / BaseUrl / RestApiUrl / HttpClientName) |
ICloudDriveProvider |
企业网盘服务统一抽象接口 |
UploadFileRequest / UploadFileResult |
上传请求与结果 |
SearchFilesRequest |
搜索请求(NSDAV XML,客户端分页/筛选) |
CreateShareLinkRequest / DriveShareLink |
共享链接请求与结果 |
DrivePermission |
权限信息(文件夹 ACL) |
实现状态
| 方法 | 协议 | 状态 | 说明 |
|---|---|---|---|
UploadAsync |
WebDAV PUT | 已实现 | 上传文件 |
DownloadAsync |
WebDAV GET | 已实现 | 下载文件 |
DeleteFileAsync |
WebDAV DELETE | 已实现 | 删除文件 |
MoveFileAsync |
WebDAV MOVE | 已实现 | 移动文件 |
CopyFileAsync |
WebDAV COPY | 已实现 | 复制文件 |
GetFileInfoAsync |
WebDAV PROPFIND | 已实现 | 获取文件元数据 |
ListFilesAsync |
WebDAV PROPFIND | 已实现 | 客户端分页 |
CreateFolderAsync |
WebDAV MKCOL | 已实现 | 创建文件夹 |
DeleteFolderAsync |
WebDAV DELETE | 已实现 | 删除文件夹 |
SearchAsync |
NSDAV XML | 已实现 | POST /nsdav/search,客户端分页/筛选 |
CreateShareLinkAsync |
NSDAV XML | 已实现 | POST /nsdav/pubObject;公开接口不支持密码和过期时间 |
DeleteShareLinkAsync |
-- | 不支持 | 公开 API 手册未提供删除共享链接接口 |
GetPermissionsAsync |
NSDAV XML | 已实现 | POST /nsdav/getSandboxAcl,仅适用于文件夹 ACL |
SetPermissionAsync |
NSDAV XML | 已实现 | POST /nsdav/updateSandboxAcl,读取当前 ACL 后替换/追加 |
DeletePermissionAsync |
NSDAV XML | 已实现 | POST /nsdav/updateSandboxAcl,读取当前 ACL 后移除 |
ListVersionsAsync |
-- | 不支持 | 公开 API 手册未提供历史版本列表接口 |
DownloadVersionAsync |
-- | 不支持 | 公开 API 手册未提供指定历史版本下载接口 |
RestoreVersionAsync |
-- | 不支持 | 公开 API 手册未提供历史版本恢复接口 |
请求审计
内置 Bitzsoft.Integrations.RequestLogging 出站请求记录管道,默认 NullRequestLogStore 不持久化。
// ① 默认:启用记录管道但不持久化(日志丢弃)
services.AddBitzsoftNutstoreCloudDrive(options => { /* ... */ });
// ② 持久化:宿主注册 IRequestLogStore 实现后,所有出站请求自动落库
services.AddRequestLogging<MyRequestLogStore>(opts =>
{
opts.MaxInMemoryBodyBytes = 64 * 1024; // 仅控制内存/加密临时文件切换,不截断正文
opts.SensitiveFields.Add("mySecret"); // 额外脱敏字段
});
services.AddBitzsoftNutstoreCloudDrive(options => { /* ... */ });
注意事项
- WebDAV 协议不支持服务端搜索和分页,
ListFilesAsync采用客户端分页 SearchAsync使用 NSDAV 搜索接口,分页和类型/扩展名筛选在客户端完成- 分享链接创建接口不支持访问密码、过期时间或最大访问次数
- 权限管理接口会提交完整 ACL 列表,封装会先读取再替换/移除目标权限
fileId和folderId均为 WebDAV 相对路径(如/documents/report.pdf)- 应用密码需在坚果云 Web 端「安全选项」中生成第三方应用专用密码
- 文件夹 ID 以路径形式表示,根目录使用
/
依赖
| 包 | 说明 |
|---|---|
Bitzsoft.Integrations.CloudDrive |
企业网盘抽象层 |
Bitzsoft.Integrations.RequestLogging |
出站请求记录管道 |
Bitzsoft.Integrations.Compatibility |
基础工具库 |
Microsoft.Extensions.Http |
IHttpClientFactory(连接池) |
Microsoft.Extensions.Options.ConfigurationExtensions |
配置节点绑定 |
相关包
- Bitzsoft.Integrations.CloudDrive -- 抽象层
- Bitzsoft.Integrations.CloudDrive.All -- 聚合包(一键注册全部供应商)
- Bitzsoft.Integrations.CloudDrive.Microsoft365 -- Microsoft 365 / OneDrive
- Bitzsoft.Integrations.CloudDrive.Gokuai -- 够快云库
- Bitzsoft.Integrations.CloudDrive.AnyShare -- 爱数 AnyShare
- Bitzsoft.Integrations.CloudDrive.Baidu -- 百度网盘
- Bitzsoft.Integrations.CloudDrive.Aliyun -- 阿里云网盘 PDS
- Bitzsoft.Integrations.Compatibility -- 基础工具库
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Bitzsoft.Integrations.CloudDrive (>= 1.0.0-alpha.10)
- Bitzsoft.Integrations.Compatibility (>= 1.0.0-alpha.10)
- Bitzsoft.Integrations.RequestLogging (>= 1.0.0-alpha.10)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Http (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
-
net5.0
- Bitzsoft.Integrations.CloudDrive (>= 1.0.0-alpha.10)
- Bitzsoft.Integrations.Compatibility (>= 1.0.0-alpha.10)
- Bitzsoft.Integrations.RequestLogging (>= 1.0.0-alpha.10)
- Microsoft.Extensions.Configuration.Abstractions (>= 5.0.0)
- Microsoft.Extensions.Http (>= 5.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 5.0.0)
-
net8.0
- Bitzsoft.Integrations.CloudDrive (>= 1.0.0-alpha.10)
- Bitzsoft.Integrations.Compatibility (>= 1.0.0-alpha.10)
- Bitzsoft.Integrations.RequestLogging (>= 1.0.0-alpha.10)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Http (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Bitzsoft.Integrations.CloudDrive.Nutstore:
| Package | Downloads |
|---|---|
|
Bitzsoft.Integrations.CloudDrive.All
企业网盘服务聚合包 — 包含所有供应商实现 |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-alpha.10 | 32 | 7/26/2026 |
| 1.0.0-alpha.9 | 60 | 7/12/2026 |
| 1.0.0-alpha.8 | 59 | 7/1/2026 |
| 1.0.0-alpha.7 | 74 | 6/16/2026 |
| 1.0.0-alpha.6 | 66 | 6/16/2026 |
| 1.0.0-alpha.5 | 67 | 6/14/2026 |
| 1.0.0-alpha.4 | 54 | 7/1/2026 |
| 1.0.0-alpha.3 | 66 | 6/7/2026 |