C#怎么实现七牛云OSS上传 C#如何用七牛云SDK上传图片和文件到云对象存储并获取URL【工具】

小芳君_1738

小芳君_1738

2026-04-01

532人浏览

原创

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

c#怎么实现七牛云oss上传 c#如何用七牛云sdk上传图片和文件到云对象存储并获取url【工具】

七牛云 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"}。

C#
C#

"避开 C# 常见错误——空陷阱、异步陷阱、LINQ 陷阱及资源泄漏。"

下载
  • 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 会自动读记录、跳过已传分片
七牛云上传看着简单,真正卡住人的地方往往不是代码,而是控制台里那些没点开看过的开关:比如「空间区域」选错(华北 vs 华东影响域名)、测试域名没点「启用」、或者自定义域名没配 CNAME。这些不报错,只默默返回 404 或超时。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

c#

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c#是什么意思
c#是什么意思

C#是一种通用的面向对象编程语言,它在.NET框架上运行,可用于开发各种类型的应用程序。本专题为大家提供c#相关的各种文章、以及下载和课程。

2023.08.08

1012

5

什么是c#
什么是c#

C#(读作C Sharp)是一种现代的、通用的、面向对象的编程语言。它由微软公司开发,于2000年首次发布,主要用于开发Windows桌面应用程序、Web应用程序、移动应用程序以及游戏开发等领域。C#是一种类型安全和托管的编程语言,它结合了C++的强大性能和C语言的简单易学特点,并引入了许多新的特性和概念,如委托、属性、泛型和异步编程等,以提高开发效率和代码可维护性。

2023.08.31

2871

3

C#中base关键字的用法
C#中base关键字的用法

在C#中,base关键字用于访问当前类的基类成员,这包括基类的字段、属性、方法、构造函数、索引器以及事件。想了解更多C#的相关内容,可以阅读本专题下面的文章。

2024.03.13

865

8

C#Task用法
C#Task用法

Task在C#中是用于表示异步操作的对象,它位于System.Threading.Tasks命名空间中。想了解更多C#中各种用法的相关内容,可以阅读本专题下面的文章。

2024.03.14

2615

11

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

2026.02.03

312

18

C# 多线程与异步编程
C# 多线程与异步编程

本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

2026.02.06

389

20

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

2026.03.11

631

24

C# Unity游戏开发与ECS架构实践
C# Unity游戏开发与ECS架构实践

本专题聚焦 C# 在 Unity 游戏开发中的应用,系统讲解 ECS(Entity-Component-System)架构设计、游戏对象管理、性能优化与内存控制策略。通过实际游戏案例,帮助开发者构建高性能、结构清晰的游戏系统,提高游戏开发效率与运行性能。

2026.04.13

329

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习