基于python实现上传文件到OSS代码实例

 更新时间:2020年05月09日 14:42:52   作者:COOLOPS  
这篇文章主要介绍了基于python实现上传文件到OSS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

基础环境

# +++++ 阿里云OSS开发指南里都有详细的步骤,在这里整理了一下自己需要的东西
# 确定开发环境,centOS默认安装了python2.7
# python -V
# 安装python开发包
# yum install -y python-devel
# 安装OSS的sdk
# yum install -y python-pip
# pip2.7 install oss2
# 验证oss2是否安装正确
'''
>>> import oss2
>>> oss2.__version__
'2.6.0'
'''
# 验证OSS扩展库crcmod是否安装
'''
在python环境中,输入一下内容,如果有错误信息,则说明扩展库安装不成功,默认安装oss2的时候会安装扩展库
>>> import crcmod._crcfunext
如果出现安装不成功,则按一下步骤安装:
1、执行以下命令卸载crcmod
# pip uninstall crcmod
2、安装python-devel
3、执行以下命令重新安装crcmod
# pip install crcmod
'''

小文件上传

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')

# 必须以二进制的方式打开文件,因为需要知道文件包含的字节数。
with open('<yourLocalFile>', 'rb') as fileobj:
  # Seek方法用于指定从第1000个字节位置开始读写。上传时会从您指定的第1000个字节位置开始上传,直到文件结束。
  fileobj.seek(1000, os.SEEK_SET)
  # Tell方法用于返回当前位置。
  current = fileobj.tell()
  bucket.put_object('<yourObjectName>', fileobj)


分片上传

# -*- coding: utf-8 -*-import os
from oss2 import SizedFileAdapter, determine_part_size
from oss2.models import PartInfo
import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')

key = '<yourObjectName>'
filename = '<yourLocalFile>'

total_size = os.path.getsize(filename)
# determine_part_size方法用来确定分片大小。
part_size = determine_part_size(total_size, preferred_size=100 * 1024)

# 初始化分片。
upload_id = bucket.init_multipart_upload(key).upload_id
parts = []

# 逐个上传分片。
with open(filename, 'rb') as fileobj:
  part_number = 1
  offset = 0
  while offset < total_size:
    num_to_upload = min(part_size, total_size - offset)
        # SizedFileAdapter(fileobj, size)方法会生成一个新的文件对象,重新计算起始追加位置。
    result = bucket.upload_part(key, upload_id, part_number,
                  SizedFileAdapter(fileobj, num_to_upload))
    parts.append(PartInfo(part_number, result.etag))

    offset += num_to_upload
    part_number += 1

# 完成分片上传。
bucket.complete_multipart_upload(key, upload_id, parts)

# 验证分片上传。
with open(filename, 'rb') as fileobj:
  assert bucket.get_object(key).read() == fileobj.read()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • TensorFlow Autodiff自动微分详解

    TensorFlow Autodiff自动微分详解

    这篇文章主要介绍了TensorFlow Autodiff自动微分详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Restful_framework视图组件代码实例解析

    Restful_framework视图组件代码实例解析

    这篇文章主要介绍了Restful_framework视图组件代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python+playwright微软自动化工具的使用

    python+playwright微软自动化工具的使用

    这篇文章主要介绍了python+playwright微软自动化工具的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • python3.7将代码打包成exe程序并添加图标的方法

    python3.7将代码打包成exe程序并添加图标的方法

    这篇文章主要介绍了python3.7将代码打包成exe程序并添加图标的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-10-10
  • 重命名批处理python脚本

    重命名批处理python脚本

    师兄采集的视网膜图像放在一个文件夹下,由于分类十分混乱,因此出现了一个文件多次出现的情况,因此让我写了个脚本
    2013-04-04
  • python如何设置静态变量

    python如何设置静态变量

    在本篇内容里小编给大家整理的是一篇关于python如何设置静态变量的相关文章,有兴趣的朋友们可以参考下。
    2020-09-09
  • 利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程

    利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程

    这篇文章主要介绍了利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程,示例基于CentOS操作系统,需要的朋友可以参考下
    2015-05-05
  • python实现自动登录

    python实现自动登录

    这篇文章主要为大家详细介绍了python实现自动登录,填充网页表单,从而自动登录WEB门户,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python的Django框架中的select_related函数对QuerySet 查询的优化

    Python的Django框架中的select_related函数对QuerySet 查询的优化

    这篇文章主要介绍了Python的Django框架中的select_related函数对QuerySet查询的优化,以减少数据库的查询次数为目的,需要的朋友可以参考下
    2015-04-04
  • Pandas分组聚合之使用自定义函数方法transform()、apply()

    Pandas分组聚合之使用自定义函数方法transform()、apply()

    Pandas具有很多强大的功能,transform就是其中之一,利用它可以高效地汇总数据且不改变数据行数,下面这篇文章主要给大家介绍了关于Pandas分组聚合之使用自定义函数方法transform()、apply()的相关资料,需要的朋友可以参考下
    2023-01-01

最新评论