开发者社区 问答 正文

OSS如何上传文件?

创建了存储空间之后,您可以通过以下两种途径上传任意类型文件到存储空间中:


  • 您可以通过OSS控制台上传小于 5GB 的文件。

  • 您可以通过SDK或API使用Multipart Upload的分片上传的方法,上传大于 5GB 的文件,您可以参阅开发人员指南中的相关章节进行上传操作。

[backcolor=transparent]注意:如果上传的文件与存储空间中已有的文件重名,则会覆盖已有文件。


操作步骤


  1. 登录 OSS 管理控制台

  2. 在左侧存储空间列表中,单击您要向其中上传文件的存储空间名称。

  3. 单击 [backcolor=transparent]文件管理 页签,找到[backcolor=transparent]上传按钮。如下图所示:

  4. 单击 [backcolor=transparent]上传,打开 [backcolor=transparent]上传选项 对话框,如下图所示:

    说明:您可以将文件上传到指定文件夹或者默认文件夹。单击[backcolor=transparent]上传之前先选择或者 新建文件夹可将文件上传到指定文件夹。直接单击[backcolor=transparent]上传则将文件上传到OSS默认文件夹。

  5. 在 [backcolor=transparent]目录地址 框中,设置文件上传到OSS中的存储路径。
    • 当前目录:上传文件的默认路径,此时您无法更换改路径,如上图所示。

    • 指定目录:如果要将文件上传到某个文件夹下,需要输入路径名称,OSS将自动创建该目录并将文件上传到该目录中,如下图所示:

      [backcolor=transparent]说明:关于文件夹的说明和操作,请参见 新建文件夹

  • 在 [backcolor=transparent]文件ACL 区域中,选择文件的读写权限。默认为继承所在Bucket的读写权限。

  • 在 [backcolor=transparent]上传 框内,将要上传的文件拖拽到此;或者单击 [backcolor=transparent]直接上传,选择要上传的文件,然后单击 [backcolor=transparent]打开。

  • 在 [backcolor=transparent]手机验证 对话框中,单击 [backcolor=transparent]点击获取,输入收到的校验码,单击 [backcolor=transparent]确定,打开[backcolor=transparent]上传任务 对话框,显示上传进度。您也可以单击左侧下方的 [backcolor=transparent]上传任务 查看上传进度。
  • 展开
    收起
    青衫无名 2017-10-17 15:00:00 5547 分享 版权
    阿里云 AI 助理回答

    您描述的是通过阿里云对象存储服务(OSS)控制台上传文件的详细步骤,这是一种直观且适合小规模文件上传的方式。对于大于5GB的大文件或者需要编程实现自动化上传的场景,使用OSS的SDK或API进行Multipart Upload会更加高效和灵活。

    通过OSS SDK上传大文件

    以下是使用阿里云OSS SDK进行大文件上传的基本步骤,这里以Python SDK为例:

    1. 安装阿里云OSS Python SDK: 首先,确保你已经安装了阿里云Python SDK,可以通过pip安装:

      pip install oss2
      
    2. 配置访问密钥和endpoint: 在代码中设置你的Access Key ID、Access Key Secret以及Bucket所在的地区Endpoint。

    3. 初始化OSS客户端

      import oss2
      
      auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
      bucket = oss2.Bucket(auth, 'http://<yourEndpoint>', '<yourBucketName>')
      
    4. 使用Multipart Upload上传大文件

      # 文件路径
      file_path = '<yourFilePath>'
      # OSS中的目标文件名
      object_key = '<yourObjectNameInOSS>'
      
      # 初始化分片上传
      upload_id = bucket.init_multipart_upload(object_key).upload_id
      
      # 分片大小,单位为字节,这里设定为10MB
      part_size = 10 * 1024 * 1024
      # 计算文件总大小
      file_size = os.path.getsize(file_path)
      # 计算分片数量
      part_count = int(file_size / part_size) + (file_size % part_size > 0)
      
      # 逐个上传分片
      parts = []
      for i in range(part_count):
         offset = i * part_size
         length = min(part_size, file_size - offset)
      
         # 读取分片数据
         with open(file_path, 'rb') as file:
             file.seek(offset)
             data = file.read(length)
      
         # 上传分片并记录part信息
         result = bucket.upload_part(object_key, upload_id, i+1, data)
         parts.append(oss2.models.PartInfo(i+1, result.etag))
      
      # 完成分片上传
      bucket.complete_multipart_upload(object_key, upload_id, parts)
      print(f"文件 {file_path} 上传成功至 {object_key}")
      

    请将<yourAccessKeyId>, <yourAccessKeySecret>, <yourEndpoint>, <yourBucketName>, <yourFilePath>, 和 <yourObjectNameInOSS> 替换为实际的值。

    通过这种方式,你可以有效地管理大规模文件的上传,同时利用OSS的高可用性和扩展性来优化存储和访问性能。记得在操作前确保遵循阿里云的安全最佳实践,比如不要在代码中硬编码敏感信息,而是通过环境变量或密钥管理系统来安全地管理访问密钥。

    有帮助
    无帮助
    AI 助理回答生成答案可能存在不准确,仅供参考
    0 条回答
    写回答
    取消 提交回答