【python】 文件/图片上传 阿里云OSS ,获取外网链接 实例

1 背景

我这边使用oss是因为python+selenium自动化测试框架用到了一个注册账号获取验证码的接口(框架调通后再分享),然后这个鬼接口不支持直接上传验证码图片,必须把图片挂到外网上,然后建议用oss,我才找的阿里云oss

另外网上查的阿里云oss上传的具体示例代码都写得很模糊,我也是很忧伤的试了好多次才知道具体应该怎么弄,下面就详细的介绍一下吧!
在这里插入图片描述
另外马克一下官方帮助文档:https://help.aliyun.com/document_detail/32026.html?spm=a2c4g.11186623.2.10.551c15cdpfUSev#concept-32026-zh

2 阿里云oss注册和准备

注册一个个人的阿里云账号,实名认证,这部分就像买火车票一样按他们的步骤来就可以了,我主要说一下需要设置的东西,开通的阿里云oss控制台长这样
在这里插入图片描述

2.1 弄一个bucket

上传文件的时候代码里要用,这个bucket名称看起来就像域名一样是不能和别人重名的
另外注意那个endpoint也是上传代码要用的,查了一下是和选择的地域有关的
在这里插入图片描述

2.2 文件上传路径

创建bucket之后,可以从控制台进去看文件了,创建一个文件目录,我这里是在根目录下面弄了一个“python”,这个目录也是上传代码要用的
在这里插入图片描述

3 python上传代码

代码如下,我再说一下参数在哪里

        access_key_id = 'LTA*******************'
        access_key_secret = 'ZAx*******************************'
        bucket_name = 'wangwy'
        endpoint = 'oss-cn-beijing.aliyuncs.com'
        # 创建对象
        bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
        # 上传
        with open(file_name, "rb") as f:
            data = f.read()
        bucket.put_object('python/captcha_num.png', data)  # data为数据,可以是图片
        fileurl = bucket.sign_url('GET', 'python/captcha_num.png', 60 * 60 * 24)  # 返回值为链接,参数依次为,方法/oss上文件路径/过期时间(s)

3.1 安装包 oss2

pip install oss2

3.1 参数access_key_id /access_key_secret

获取id和密钥的地方再个人中心,下图这里
在这里插入图片描述
在这里插入图片描述

3.2 参数bucket_name /endpoint

就是上面创建的bucket,已经创建完的可以在下面找到,圈出来的就是bucket_name和endpoint
在这里插入图片描述

3.3 bucket.put_object/sign_url的参数key

这两个都是oss中对应的文件路径+文件名,注意不需要从“/”开始,另外要和bucket对应
在这里插入图片描述

4 实现效果

上传成功后,程序获得的链接长这样(也就是返回了文件的外网地址)
在这里插入图片描述
阿里云oss后台长这样
在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
你可以使用阿里云OSS的ListObjects接口来获取指定目录下的所有文件。具体步骤如下: 1. 创建OSSClient实例,连接到阿里云OSS服务。 2. 调用ListObjects接口,指定Bucket名称和目录路径。 3. 遍历返回的OSSObjectSummary列表,获取每个文件的信息。 下面是Java代码示例: ```java import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.ListObjectsRequest; import com.aliyun.oss.model.ObjectListing; import com.aliyun.oss.model.OSSObjectSummary; public class ListObjectsSample { public static void main(String[] args) { String endpoint = "yourEndpoint"; String accessKeyId = "yourAccessKeyId"; String accessKeySecret = "yourAccessKeySecret"; String bucketName = "yourBucketName"; String prefix = "yourDirectoryPath"; // 目录路径,以“/”结尾 // 创建OSSClient实例 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 构造ListObjectsRequest请求 ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName); listObjectsRequest.setPrefix(prefix); // 调用ListObjects接口,获取指定目录下的所有文件 ObjectListing objectListing = ossClient.listObjects(listObjectsRequest); while (true) { // 遍历返回的OSSObjectSummary列表 for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) { System.out.println(objectSummary.getKey()); } if (!objectListing.isTruncated()) { break; } // 如果返回的结果被截断,继续调用ListObjects接口获取剩余的文件 objectListing = ossClient.listNextBatchOfObjects(objectListing); } // 关闭OSSClient实例 ossClient.shutdown(); } } ``` 其中,`endpoint`、`accessKeyId`、`accessKeySecret`和`bucketName`需要替换为你自己的阿里云OSS账号信息,`prefix`需要指定你要获取的目录路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值