阿里云oss上传文件:控制台、SDK还是分片上传,该用哪种

动手之前先看三样东西:Bucket 在哪个地域,手里的访问凭证能做什么,文件有多大、谁需要访问。这三个问题的答案基本决定了该用哪种方法。

阿里云oss上传文件:控制台、SDK还是分片上传,该用哪种

OSS 的访问地址(Endpoint)跟地域绑定,比如华东1(杭州)的地址是 oss-cn-hangzhou.aliyuncs.com。Endpoint 和 Bucket 不在同一地域时,请求通常会报错或者很慢,所以别凭印象写,先去控制台确认 Bucket 的地域。

凭证建议用 RAM 子账号的 AccessKey,权限只授予目标 Bucket 的 oss:PutObject。日常上传不要用主账号密钥。主账号密钥一旦泄露,整个账号都会受影响,子账号泄露的影响范围小得多。

二、控制台上传:偶尔传几个文件时最省事

一张产品图、一份说明文档,直接用控制台就够了。

  1. 登录 OSS 控制台,进入目标 Bucket 的“文件管理”页面。
  2. 点“上传文件”,选择本地文件。不指定路径的话,文件会落在 Bucket 根目录下。
  3. 需要分类存放时,在“目标路径”里填写,比如 images/2024/。末尾的斜杠表示这是一个目录。
  4. 上传完成后打开文件详情,复制外链地址实际访问一次,确认权限和预期一致。

控制台对单个文件的大小有限制。文件一大,就换到下面的命令行或 SDK。

三、ossutil 命令行:适合运维脚本和定时任务

ossutil 是阿里云官方的命令行工具,写进脚本或 crontab 很顺手。第一次使用先运行 ossutil config,按提示填入 Endpoint、AccessKeyId 和 AccessKeySecret。配置会保存在用户目录下的本地文件里,记得把该文件的权限收紧到仅当前用户可读。

上传单个文件:

ossutil cp ./report.pdf oss://my-bucket/docs/report.pdf

上传整个目录,子目录一并处理:

ossutil cp ./photos oss://my-bucket/photos -r

如果是每天都要同步的一批文件,加上 –update 参数更划算。它只传有变化的文件,已经同步过的会跳过。文件量大时,这一点能省下不少时间和流量。

四、Python SDK:上传逻辑要嵌进业务代码时

当上传动作和业务流程绑在一起,比如用户提交表单后自动保存图片,SDK 更合适。下面以官方的 oss2 库为例,先执行 pip install oss2 安装。

密钥不要写死在代码里,统一从环境变量读取:

import os
import oss2

auth = oss2.Auth(os.environ['OSS_ACCESS_KEY_ID'], os.environ['OSS_ACCESS_KEY_SECRET'])
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'my-bucket')
result = bucket.put_object_from_file('images/logo.png', 'local/logo.png')
print(result.status)  # 200 表示成功

这段代码把本地的 local/logo.png 上传到 Bucket 的 images/ 目录下,返回结果的 status 为 200 即成功。生产环境里,调用最好包在 try 块中,捕获 oss2.exceptions.OssError,同时记录 request_id。之后向阿里云提交工单排查时,这个 ID 能省去很多来回沟通。

五、大文件用分片上传

大文件如果用一次 PUT 发出去,中途断开就得从头再来。分片上传把文件切成若干块并行传输,哪一块失败,只重传那一块。

oss2 的 resumable_upload 把这些都封装好了,自动分片、并发上传,中断后还能续传:

import oss2

oss2.resumable_upload(bucket, 'videos/course01.mp4', 'local/course01.mp4',
                      multipart_threshold=100*1024*1024,
                      part_size=10*1024*1024,
                      num_threads=4)

三个参数分别控制:multipart_threshold 是启用分片的文件大小阈值,这里是 100MB;part_size 是每个分片的大小,这里是 10MB;num_threads 是并发线程数。带宽充足时可以调高,但线程太多会占满本机带宽和连接数,最好用自己的文件实测一下。

如果上传的是几 GB 的视频,网络不稳定时,分片加并发通常能明显提高完成率。提升多少取决于你的网络环境,不必照搬别人的数字。

六、前端直传:别让服务器中转文件

用户上传头像或附件时,如果文件先经过自己的服务器再转存到 OSS,带宽和内存都会被占用。更常见的做法是由服务端生成预签名 URL,客户端拿到后直接上传到 OSS。

服务端生成一个 10 分钟有效的上传地址:

url = bucket.sign_url('PUT', 'avatars/u123.jpg', 600)

客户端用 HTTP PUT 把文件内容发到这个地址即可。URL 只对指定的对象键有效,过期自动失效,泄露后的风险可控。如果同一个用户需要上传到多个路径,可以改用 STS 临时凭证,再通过 RAM 策略限定路径前缀。

七、常见问题

  • 上传后打不开:多数时候是 Bucket 设为私有读。需要生成带签名的下载地址,或者在确认安全的前提下调整读权限。
  • 中文文件名显示乱码:对象键统一使用 UTF-8,客户端和服务端的编码要保持一致。
  • 同名文件被覆盖:OSS 不会弹出覆盖提醒。业务需要保留历史版本的话,在 Bucket 上开启版本控制。
  • 账单突然变高:定期检查生命周期规则,把长期不访问的文件转为低频或归档存储。未完成的分片也会计费,记得清理。

安全上记住三点:密钥只放在环境变量或密钥管理服务里;Bucket 默认保持私有;上传权限按路径和操作类型拆开授权。这三点做好,很多安全问题都能提前挡住。

赞 (0)
阿里云合作伙伴怎么入驻?审核、权益和常见卡点
上一篇 2026年10月31日 下午8:57
阿里云专有网络怎么规划网段,多VPC互联怎么配
下一篇 2026年10月31日 下午8:58

相关推荐

  • 阿里云云主机怎么选?按配置和计费场景拆开看

    选阿里云云主机,很多人一上来就盯着价格。比价之前,不妨先想清楚三件事:业务跑在什么程序上,访问量大概是什么量级,数据丢了或服务断了能不能接受。这三个问题有了答案,再去看实例规格,就不容易绕晕。 阿里云 ECS 的实例按用途分成几类。通用型比较均衡,网站、小型应用、开发测试用它基本够了。计算型的 CPU 性能更强,适合视频转码、批量数据处理这类吃算力的活。内存…

    2026年10月31日
  • 阿里云服务器免费能用吗?试用和领取条件要看清

    想搭个人网站或练后端的人,多半会先问一句:阿里云服务器免费吗?直接说结论,免费是有前提的。阿里云有试用、新用户权益和学生优惠,但这些大多有时限、有门槛。过了期或者条件不符,就得按正常价格付费。把规则看清楚,才不会月底收到一笔没想到的账单。 阿里云服务器免费的几种途径 个人用户一般能接触到的,大致是下面几类: 新用户试用:完成实名认证后,部分云服务器产品可能有…

    2026年10月30日
  • 阿里云上海地域怎么选?先看延迟、合规和成本

    很多团队立项时随手选了离自己最近的地域,等业务上线才发现延迟、合规或成本上有问题。阿里云上海地域是华东的核心节点之一,金融、电商和制造业的不少业务都跑在这里。下面从实际场景出发,说说选上海之前该看哪几件事。 为什么上海值得先看 上海是长三角的中心城市,也是国内互联网骨干网络的重要汇聚点之一。阿里云在上海部署了多个可用区,ECS、RDS、OSS、SLB 这些常…

    2026年10月31日
  • 阿里云租用怎么选?配置和计费差在哪里

    很多人一提租阿里云,想到的就是买一台服务器。其实上线一个站点,通常会用到云服务器ECS、云数据库RDS、对象存储OSS、负载均衡SLB和内容分发CDN这几样东西,它们组合在一起,才是完整的运行环境。 动手前先想清楚三件事:每天大概有多少访问,半年后数据量会涨到多大,有没有多地域或高可用的需求。这三个答案决定了该租什么、租多大。方向错了,后面的钱就白花了。 计…

    2026年10月31日
  • 阿里云重新出发,云基础设施怎么押注AI

    过去十几年,国内云计算主要解决资源问题。开发者不用自己买机房和服务器,需要多少算力就取多少,价格也比自建便宜。这件事已经做成了。阿里云重新思考的,是云厂商到底该卖什么给客户。 答案正在变化。客户现在更常问的是:系统能不能扛住大促流量,大模型能不能接入自己积累的业务知识,敏感数据能不能留在境内。单价当然仍然重要,但已经不是唯一的判断标准。 大促流量怎么接得住 …

    2026年10月31日
返回顶部