阿里云OSS下载详解

阿里云对象存储(Object Storage Service,简称OSS)是阿里云提供的海量、安全、低成本、高可靠的云存储服务。在使用过程中,对象的上传和下载是最基础的功能之一。本文将从多个方面介绍OSS的下载功能,包括下载文件、下载链接、失败解决、费用等问题。

一、OSS下载文件

在使用OSS进行文件下载时,我们需要先了解下载文件的方法,本节将对OSS下载文件的方法进行阐述。

Java SDK下载示例:

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret请登录控制台查找或联系管理员获取
String accessKeyId = "";
String accessKeySecret = "";
// Bucket名称
String bucketName = "";
// Object完整路径
String objectName = "";

// 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 下载Object到文件
ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(""));

// 关闭OSSClient
ossClient.shutdown();

Python SDK下载示例:

import oss2
# 阿里云AccessKeyId、AccessKeySecret和Endpoint
access_key_id = ''
access_key_secret = ''
endpoint = ''
# Bucket名称和Object完整路径
bucket_name = ''
object_name = ''
# 下载文件
auth = oss2.Auth(access_key_id, access_key_secret)
bucket = oss2.Bucket(auth, endpoint, bucket_name)
bucket.get_object_to_file(object_name, '')

二、阿里云OSS下载链接

在使用OSS进行文件下载时,我们可以直接生成已签名URL链接,并将链接分享给他人,以供他人进行下载。

Java SDK生成已签名URL链接示例:

// Endpoint以杭州为例,其它Region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret请登录控制台查找或联系管理员获取
String accessKeyId = "";
String accessKeySecret = "";
// Bucket名称
String bucketName = "";
// Object完整路径
String objectName = "";

// 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 设置URL过期时间为1小时
Date expiration = new Date(new Date().getTime() + 3600 * 1000);

// 生成以HTTP GET方法访问的签名URL,URL有效期为1小时
URL url = ossClient.generatePresignedUrl(bucketName, objectName, expiration, HttpMethod.GET);

// 关闭OSSClient
ossClient.shutdown();

Python SDK生成已签名URL链接示例:

import oss2
# 阿里云AccessKeyId、AccessKeySecret和Endpoint
access_key_id = ''
access_key_secret = ''
endpoint = ''
# Bucket名称和Object完整路径
bucket_name = ''
object_name = ''

# 设置URL过期时间为1小时
expires = 3600
auth = oss2.Auth(access_key_id, access_key_secret)
bucket = oss2.Bucket(auth, endpoint, bucket_name)
# 生成以HTTP GET方法访问的签名URL,URL有效期为1小时
url = bucket.sign_url('GET', object_name, expires)

print url

三、OSS下载文件失败

在使用OSS进行文件下载时,由于一些原因可能会导致文件下载失败,下面列举几种常遇到的问题,并提供解决方案:

1. AccessKeyId和AccessKeySecret错误

如果您在下载文件时遇到错误信息:“The OSS Access Key Id you provided does not exist in our records.”,这表明您输入的AccessKeyId或AccessKeySecret错误。

解决方法:请重新输入正确的AccessKeyId和AccessKeySecret。

2. Bucket不存在或Object不存在

如果您在下载文件时遇到错误信息:“The bucket you are attempting to access must be addressed using the specified endpoint.” 或 “The specified key does not exist.”,这表明您输入的Bucket名称或Object名称错误。

解决方法:请检查Bucket名称和Object名称是否正确。

四、阿里云OSS下载费用

在使用OSS进行文件下载时,需要根据实际情况了解OSS的下载费用,以便选择最优的下载方式。

OSS的下载费用由以下三个因素确定:

1. 下载流量

根据下载流量计算费用,OSS在指定地点的下载流量最低为0.12元/GB。下载流量和单价可以在阿里云OSS官网上查询。

2. 请求次数

当用户请求下载OSS的一个文件时,服务器会收到一个请求。OSS的请求次数和请求类型决定了其费用,详见阿里云OSS计费说明。

3. 存储空间

存储空间是指用于存放用户数据的空间,OSS的存储空间费用按存储量计费。OSS的存储费用可以在阿里云OSS官网上查询。

五、其他问题探讨

1. OSS下载PDF文件

当需要从OSS下载PDF文件时,我们可以使用OSS提供的getStream方法获取流,从而进行下载。

Java SDK下载PDF文件示例:

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret请登录控制台查找或联系管理员获取
String accessKeyId = "";
String accessKeySecret = "";
// Bucket名称
String bucketName = "";
// Object完整路径
String objectName = "";

// 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 下载Object到流
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();

// 从流中读取PDF并转存到本地文件
FileOutputStream output = new FileOutputStream("");
byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = inputStream.read(buffer))) {
    output.write(buffer, 0, n);
}
output.close();

// 关闭OSSClient
ossClient.shutdown();

2. OSS下载doc文件

当需要从OSS下载doc文件时,我们可以使用OSS提供的getStream方法获取流,从而进行下载。

Java SDK下载doc文件示例:

// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret请登录控制台查找或联系管理员获取
String accessKeyId = "";
String accessKeySecret = "";
// Bucket名称
String bucketName = "";
// Object完整路径
String objectName = "";

// 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 下载Object到流
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();

// 从流中读取doc并转存到本地文件
FileOutputStream output = new FileOutputStream("");
byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = inputStream.read(buffer))) {
    output.write(buffer, 0, n);
}
output.close();

// 关闭OSSClient
ossClient.shutdown();

3. OSS下载到了哪里

在进行文件下载时,OSS会将文件下载到本地目录中,具体路径请查看下载代码中的文件路径设置。

4. OSS下载文件名选取

在进行文件下载时,文件名选取应根据实际业务需求进行制定,文件名应表达清晰、简明准确。

原创文章,作者:YQZSI,如若转载,请注明出处:https://www.506064.com/n/331615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
YQZSIYQZSI
上一篇 2025-01-20 14:11
下一篇 2025-01-20 14:11

相关推荐

  • 阿里云邮箱主机名

    阿里云邮箱主机名是指在阿里云购买并绑定域名后,为邮件服务配置的一个记录类型。在这篇文章中,我们将从多个方面对阿里云邮箱主机名进行详细阐述,帮助您更好地了解它的作用、使用方法和注意事…

    编程 2025-04-27
  • 阿里Python技术手册

    本文将从多个方面对阿里Python技术手册进行详细阐述,包括规范、大数据、Web应用、安全和调试等方面。 一、规范 Python的编写规范对于代码的可读性和可维护性有很大的影响。阿…

    编程 2025-04-27
  • 阿里云Grass使用指南

    本文将为大家详细介绍阿里云Grass平台,包括核心概念、使用场景、基本操作、高级特性等内容,帮助大家全面掌握Grass的使用。 一、核心概念 Grass是阿里云开发的一款全新PAA…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25

发表回复

登录后才能评论