Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python上传文件到oss

python上传文件到oss

作者头像
py3study
发布于 2020-01-10 09:16:07
发布于 2020-01-10 09:16:07
9.9K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

基础环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# +++++ 阿里云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
'''

小文件上传

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import oss2
import os

# 阿里云主账号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)

分片上传

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- 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()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于minio实现大文件的分片上传功能
直接把minio开放出去作为一个s3服务,minio本身也是支持自动对文件进行分片上传的,但是这样会有一个问题,权限很难做精细化的控制,对于高安全性要求的场景就达不到安全要求。
明月AI
2023/08/26
4.6K0
基于minio实现大文件的分片上传功能
python3上传备份文件至OSS
上周刚忙完某安全证书的考证,本来这周就应该开始学一些应急响应的东西,碰巧碰到某大佬,问我有一个功能想实现,能不能写一个脚本凑合一下
Elapse
2020/12/18
4.8K0
python 上传下载 OSS 文件
实现的功能很简单,先设置好云的 AccessKeyId 和 AccessKeySecret ,然后设置你所访问的 bucket 所在的区的链接和你所需要访问的 bucket 的名称。之后就可以在 linux 终端上访问
周小董
2019/03/25
7.4K0
Python实现GCS bucket断点续传功能,分块上传文件
我有一个关于使用断点续传到Google Cloud Storage的上传速度的问题。我已经编写了一个Python客户端,用于将大文件上传到GCS(它具有一些特殊功能,这就是为什么gsutil对我公司不适用的原因)。在大约2个月前运行的测试中,它很好地利用了可用的连接带宽,其中25Mbps连接中大约有20Mbps。该项目被冻结了将近2个月,现在,当重新打开该项目时,同一客户端以非常慢的速度上载,速度约为25Mbps的1.4Mbps。我已经编写了简单的Python脚本来检查它是否也会遇到相同的问题,并且速度稍快一些,但仍约为2Mbps。Gsutil工具的执行效果几乎与我的Python脚本相同。我还以超过50Mbps的上传速度在不同的网络基础架构上运行了该测试,效果非常好。
青年夏日
2021/05/11
1.4K0
一行代码将文件存储到本地或各种存储平台
fileStorageService.of返回的是一个FileInfo对象,这个对象就是我们刚才测试看到的内容。我们可以通过链式编程获得里面的东西。
用户10143704
2024/05/03
2780
使用阿里函数计算同步OSS增量对象到COS
阿里函数计算与腾讯云的SCF类似,都是无服务的执行环境,它支持配置OSS的触发器,借助该功能我们可以把阿里OSS的增量数据同步到COS上。
ictfox
2020/08/14
4.6K1
使用阿里函数计算同步OSS增量对象到COS
python对接oss上传和下载
https://help.aliyun.com/document_detail/85288.html
阿超
2022/08/21
6.5K0
聊聊 Jmeter 如何并发执行 Python 脚本
最近有小伙伴后台给我留言,说自己用 Django 写了一个大文件上传的 Api 接口,现在想本地检验一下接口并发的稳定性,问我有没有好的方案
AirPython
2021/09/22
9770
Spring Boot 分片上传文件
最近好几个项目在运行过程中客户都提出文件上传大小的限制能否设置的大一些,用户经常需要上传好几个G的资料文件,如图纸,视频等,并且需要在上传大文件过程中进行优化实时展现进度条,进行技术评估后针对框架文件上传进行扩展升级,扩展接口支持大文件分片上传处理,减少服务器瞬时的内存压力,同一个文件上传失败后可以从成功上传分片位置进行断点续传,文件上传成功后再次上传无需等待达到秒传的效果,优化用户交互体验,具体的实现流程如下图所示(java fhadmin.cn)
FHAdmin
2021/12/28
1.8K0
FastAPI(24)- 详解 File,上传文件
学习 File 前最好先学习 Form:https://www.cnblogs.com/poloyy/p/15311533.html
小菠萝测试笔记
2021/09/27
5K0
通过Go写一个简易版的上传文件到存储的工具
一、场景说明在设计CICD流程中,需要将安卓的APK包上传到文件存储中去,然后将对应的下载链接发给产研、运营人员进行内部使用测试;之前我是通过Groovy实现将构建好的成品上传到私服中去的,后面业务全部迁移上云之后,就想着在将APK包直接上传到OSS存储中去,然后将生成的下载链接通过企业微信或者钉钉自动推送给相应的人员。项目地址:https://github.com/dqzboy二、实现方式创建子账号,获取子账号AccessKey创建Bucket,并授权OSS读写权限通过Go调用OSS-SDK进行实现文件的
浅时光博客
2022/09/12
1.1K0
通过Go写一个简易版的上传文件到存储的工具
大文件上传:秒传、断点续传、分片上传
文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。
程序员小猿
2022/03/09
2.1K0
某音创作者平台视频、图文作品上传发布逆向分析(支持百M以上视频分片上传)
为避免文中代码过多,导致文章不方便阅读,所以请求代码全换成了curl请求格式,请自行粘贴后使用工具进行转换成python代码进行调用!
用户8988577
2024/03/18
1.1K4
某音创作者平台视频、图文作品上传发布逆向分析(支持百M以上视频分片上传)
ElementUI 上传文件以及限制
一、概述 现有项目中,涉及文件上传。要求: 1. 文件必须是excel 2. 只能上传1个文件 3. 文件大小不能超过5M  二、Upload 上传 注意:ElementUI Upload 上传,需要
py3study
2021/03/02
4.6K0
ElementUI 上传文件以及限制
python编写api调用ceph对象网
#_*_coding:utf-8_*_ #yum install python-boto import boto import boto.s3.connection #pip install filechunkio from filechunkio import  FileChunkIO import math import  threading import os import Queue class Chunk(object):     num = 0     offset = 0     len = 
py3study
2020/01/07
1.3K0
微信公众号文章防删除
前段时间《一个出身寒门的状元之死》刷屏了,当我看完了这篇文章,很有感触,一开始我以为是事实,后来才发现完全是虚构,对于我来讲并不是非常在乎文章中的故事是否是真实的,我在乎文章给我的那种生活体验。
somenzz
2020/11/25
2K0
微信公众号文章防删除
springboot实战之文件分片上传、断点续传、秒传
上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有比较好的上传体验呢,答案有的,就是下边要介绍的几种上传方式
lyb-geek
2019/11/20
24.6K2
springboot实战之文件分片上传、断点续传、秒传
python 文件分割 脚本
""" ################################################################################ split a file into a set of parts; join.py puts them back together; this is a customizable version of the standard Unix split command-line utility; because it is written in Python, it also works on Windows and can be easily modified; because it exports a function, its logic can also be imported and reused in other applications; ################################################################################ """
用户5760343
2022/05/13
8940
基于helium自动化测试的方法进行代码仓库梳理和备份
helium是一款基于 Selenium 实现的网页自动化工具,他的 API 比 Selenium 更简介,当然也因为他是基于 Selenium 之上构建的,因此灵活性会比 Selenium 稍微差一些,不过如果对于一些简单的工作, helium 会更方便。
机械视角
2020/09/16
9630
使用腾讯云 SCF 云函数压缩 COS 对象存储文件
腾讯云serverless团队
2017/10/17
16.9K2
相关推荐
基于minio实现大文件的分片上传功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档