阿里云oss python sdk怎么上传一个目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云oss python sdk怎么上传一个目录相关的知识,希望对你有一定的参考价值。

参考技术A 是使用php吗?如果是的话你可以先获取到要上传的文件大小然后根据发送了多少得出百分比。具体OSS怎么操作我不清楚,但是进度的话你可以这么做:
<?php

ob_start();

echo <<<EOT

<div style="width:80%;height:30px;margin:120px auto;border:solid 1px #CCC;">
<div id="load" style="width:0px;height:30px;background-color:#F00;"></div>
</div>

<script type="text/javascript">
function upload(load)
document.getElementById("load").style.width = load;

</script>
EOT;
ob_flush(); //这个必不可少
flush();

for($i=0;$i<=20;$i++)
//这个是计算出百分比的
$by = sprintf('%.0f%%',$i/20*100);
echo str_pad('<script>upload("'.$by.'");</script>', 4096);
ob_flush();
flush();
sleep(1); //暂停一秒
本回答被提问者采纳

python2系列 接入阿里云oss sdk 实现上传脚本,亲测

公司图片要从原有的nfs存储上迁移到oss存储上,其实阿里云提供的很多种方式,但是作为一枚运维人员很有必要学会使用ossutil工具,当然接入阿里oss的python的sdk也是很有必要的,下面我就将我写的简单的脚本样例晒一下:

#! /usr/bin/env python
#! -*- coding:utf8 -*-
""" aliyujn oss2 python sdk 上传测试测试!!"""
from __future__ import print_function
import oss2
import os,sys

# 初始化oss登录验证
auth = oss2.Auth(‘xxxxxxxxxxxx‘, ‘xxxxxxxxxxxxxxxxxx‘)

# 所有app图片bucket
imgs_bucket = oss2.Bucket(auth, ‘oss-cn-shanghai-internal.aliyuncs.com‘, ‘yijiaoyuan-img‘)


###############################
##     以上是初始化程序      ## 
##---------------------------##            
##   以下是oss bucket操作    ##
###############################

# 本地资源路径初始化
apps = (‘api.yijiaoyuan.net‘,‘passport.letiku.net‘,‘score.letiku.net‘,‘tcms.letiku.net‘,‘tcmsq.letiku.net‘,‘tiku.letiku.net‘,‘www.letiku.net‘,‘xiyizhiyeyishi.letiku.net‘,‘xiyizhulizyys.letiku.net‘,‘yijiaoyuan.letiku.net‘,‘yjy.yijiaoyuan.net‘)

uploads_dirs = [‘/www/web/‘ + ‘test.‘ + app + ‘/Uploads‘ for app in apps]
imgs_bucket_dirs = []
imgs_bucket_files = []
local_res_files= []

# 获取bucket上的文件和目录资源,因为bucket上没有文件夹的概念
def get_res_on_bucket():
	for obj in oss2.ObjectIterator(imgs_bucket,delimiter="/"):
		if obj.is_prefix():
			imgs_bucket_dirs.append(obj)
			print(‘directory:‘ + obj.key)
		else:
			print(‘file:‘ + obj.key)
			imgs_bucket_files.append(obj)

# 文件归类,获取要上传的图片的本地res的所有文件的绝对路径
def getLocalFiles(dir):
    if os.path.exists(dir):
        for res in os.listdir(dir):
            ab_dir = dir+os.sep+res
            if os.path.isfile(ab_dir):
               #if res_uri.endswith(‘.jpg‘) or res_uri.endswith(‘.png‘):
                if ab_dir.endswith(‘.jpg‘) or ab_dir.endswith(‘.png‘):
                    local_res_files.append(ab_dir)
            if os.path.isdir(ab_dir):
                getLocalFiles(ab_dir)

# 上传文件
def putFileToBucket():
    for file in local_res_files:
        # key: bucket上的名称
        key = file[file.find(‘Uploads‘):]
        result = imgs_bucket.put_object_from_file(key,file,progress_callback=percentage)
        print(result)

# 起始程序
def start(dir):
	for dir in uploads_dirs:
            getLocalFiles(dir)

# 进度条功能
def percentage(consumed_bytes, total_bytes):
	if total_bytes:
		rate = int(100* (float(consumed_bytes)) / (float(total_bytes)))
		print (‘\r{0}%‘.format(rate),end=‘‘)
		sys.stdout.flush()

if __name__ == "__main__":
	#get_res_on_bucket()
	start(uploads_dirs)
    #print(local_res_files)
    putFileToBucket()

作为一个运维人员第一次接入sdk我还是有些激动,运行结果图示如下:

技术分享 ,

其实,最近也开始在学习php程序,公司的后台就是用的php,很有必要学习php。每天学一点,然后

我也即将用php来接入这个sdk。加油,平常心学习,每天进步一点点!!


本文出自 “bobo的运维之路” 博客,转载请与作者联系!

以上是关于阿里云oss python sdk怎么上传一个目录的主要内容,如果未能解决你的问题,请参考以下文章

python2系列 接入阿里云oss sdk 实现上传脚本,亲测

阿里云oss上传图片

有谁使用过阿里云oss的吗?多文件多图时怎么上传

oss 阿里云 web上传文件后怎样获取路径

PHP实现阿里云OSS文件上传(支持批量)

python 对象存储OSS 阿里云