php 接口返回文件下载,文件下载_存储与 CDN_产品文档_帮助与文档-网易数帆

文件下载

S3 PHP SDK提供了丰富的文件下载接口,用户可以通过以下方式从S3获取文件:

下载文件到内存

下载到本地文件

分段下载

条件下载

下载文件到内存

以下源代码实现下载文件到内存中:

/**

* 获取对象

* @param $s3Client S3Client实例

* @param $bucketName 桶名

* @param $objectName 对象名

*/

function getObject($s3Client,$bucketName,$objectName){

try{

$result = $s3Client->getObject(['Bucket'=>$bucketName,

'Key'=>$objectName]);

// The 'Body' value of the result is an EntityBody object

echo get_class($result['Body']) . "\n";

// > Guzzle\Http\EntityBody

// The 'Body' value can be cast to a string

echo $result['Body'] . "\n";

// > Hello!

} catch (\Aws\Exception\AwsException $e){

echo $e->getMessage();

}

}

下载文件到本地文件

以下源代码实现将S3文件下载到本地文件:

/**

* 获取对象

* @param $s3Client S3Client实例

* @param $bucketName 桶名

* @param $objectName 对象名

* @param $fileName 存储的文件名

*/

function getObjectToLocalFile($s3Client,$bucketName,$objectName,$fileName){

try{

$result = $s3Client->getObject(['Bucket'=>$bucketName,

'Key'=>$objectName,

'SaveAs'=>$fileName]);

} catch (\Aws\Exception\AwsException $e){

echo $e->getMessage();

}

}

范围下载

如果存储在S3中的文件较大,并且您只需要其中的一部分内容,您可以使用范围下载,下载指定范围的数据,如果指定的下载范围为"0-100",则返回结果为第0字节到第100字节的数据,返回的数据包含第100字节,即[0,100],如果指定的范围无效则下载整个文件,以下源代码获取[0,100]字节的内容:

/**

* 获取对象

* @param $s3Client S3Client实例

* @param $bucketName 桶名

* @param $objectName 对象名

* @param $fileName 存储的文件名

*/

function getObjectOfRange($s3Client,$bucketName,$objectName,$range){

try{

$result = $s3Client->getObject(['Bucket'=>$bucketName,

'Key'=>$objectName,

'Range'=>$range]);

echo $result['Body'] . "\n";

} catch (\Aws\Exception\AwsException $e){

echo $e->getMessage();

}

}

getObjectOfRange($s3Client,$bucketName,$objectName,'bytes=0-3');

Attention

下载内容也可以存储到文件中

注意下载的区间为闭区间

条件下载

下载文件时,可以指定限定条件,满足限定条件时下载,不满足时报错,不下载文件。可以使用的限定条件如下:

参数说明NosClient对应值

If-Modified-Since如果指定的时间早于实际修改时间,则正常传送。否则返回错误NosClient::NOS_IF_MODIFIED_SINCE

/**

* @param $s3Client S3Client实例

* @param $bucketName 桶名

* @param $objectName 对象名

* @param $lastMod mixed type: string (date format)|int (unix timestamp)|\DateTime

*/

function getObjectByLastModifiedTime($s3Client,$bucketName,$objectName,$lastMod){

try{

$result = $s3Client->getObject(['Bucket'=>$bucketName,

'Key'=>$objectName,

'IfModifiedSince'=>$lastMod]);

echo $result['Body'] . "\n";

} catch (\Aws\Exception\AwsException $e){

echo $e->getMessage();

}

}

Attention

1.下载内容也可以存储到文件中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值