选 qiniusdk 包即可,它是官方主力包;需配置 accesskey、secretkey 和严格匹配的 bucketname;上传成功后需手动拼接 https 自定义域名 url,并对 key 编码;大文件须用 resumeuploader 并配置断点续传。

七牛云 SDK 的 NuGet 包选哪个
用 QiniuSDK 就够了,别装 Qiniu.CloudStorage 或其他变体——后者是旧版封装,已多年未更新,QiniuSDK 是官方维护的当前主力包(截至 2024 年仍活跃)。安装命令就是:
dotnet add package QiniuSDK。如果项目是 .NET Framework 4.6+,也兼容;但 .NET Core 3.1+ 用户注意:它依赖
System.Net.Http,若遇到编译报错 The type or namespace name 'HttpClient' could not be found,补一个 <packagereference include="System.Net.Http" version="4.3.4"></packagereference> 即可。
上传前必须配置的三个参数
七牛云不认“账号密码”,只靠三样东西:AccessKey、SecretKey、BucketName。它们都在七牛云控制台「密钥管理」和「对象存储」里找,缺一不可。其中 BucketName 不是随便起的,必须和你在控制台创建的存储空间名完全一致(区分大小写),且不能带 .qiniu.com 后缀。常见错误是把域名当 Bucket 名,比如填成 myapp.qiniu.com,结果报错:Qiniu.Common.QiniuException: {"error":"no such bucket"}。
-
AccessKey和SecretKey必须用服务端环境变量或配置文件加载,绝不能硬编码进客户端或前端代码 - 上传时还要指定
bucket+key(即文件在空间里的路径名),key可为空,但为空时七牛会自动生成随机字符串,不利于后续管理 - 如果你要上传到指定目录(如
images/2024/xxx.jpg),直接把斜杠写进key字符串里就行,七牛自动建“目录”(其实是 key 前缀)
上传后怎么拿到可访问 URL
上传成功本身不返回 URL,只返回一个 PutPolicy 相关的响应体,含 hash、key 等字段。真实 URL 要自己拼:格式是 https://<your-domain>/<key></key></your-domain>。这里的 your-domain 是你绑定的自定义域名(如 cdn.example.com),不是七牛默认域名(如 xxx.bkt.clouddn.com)——后者虽能访问,但未备案或未配 HTTPS 时容易被拦截或降速。如果还没配自定义域名,临时调试可用默认域名,但记得把 http:// 换成 https://,否则某些浏览器会拒绝加载。
- 默认域名在控制台「空间设置 → 基本设置 → 测试域名」里查,形如
xxxxx.bkt.clouddn.com - 拼 URL 时
key如果含中文或空格,必须先用Uri.EscapeDataString(key)编码,否则 404 - 如果上传后 URL 返回 404,请先确认文件是否真传上去了(用七牛控制台「文件管理」搜索
key)、再确认域名是否已开启「HTTPS」和「强制跳转」设置
大文件分片上传和断点续传怎么做
七牛 SDK 对大于 4MB 的文件默认走分片上传(ResumeUpload),但前提是你要显式调用 ResumeUploader 类,而不是用简单的 PutFile。否则小文件没问题,大文件可能超时或内存溢出。关键区别在于:分片上传需要先调用 InitiateMultipartUpload 获取上传凭证,再分块上传,最后 CompleteMultipartUpload 合并——但 SDK 已封装好,你只需换类、换方法。
- 小文件(≤ 4MB):用
FormUploader.PutFile,简单直接 - 大文件(> 4MB):改用
ResumeUploader.PutFile,传参多一个new ResumeUploadConfig(),可设并发数、分片大小(默认 4MB) - 断点续传依赖本地临时记录文件(
.qiniuupload),路径由ResumeUploadConfig.RecordDirectory控制,默认在系统临时目录,生产环境建议显式指定到有写权限的路径 - 如果上传中途失败,下次用相同
key和相同本地文件路径调用PutFile,SDK 会自动读记录、跳过已传分片










