**文件下载** ########################### S3 PHP SDK提供了丰富的文件下载接口,用户可以通过以下方式从S3获取文件: - 下载文件到内存 - 下载到本地文件 - 分段下载 - 条件下载 下载文件到内存 ========================== 以下源代码实现下载文件到内存中:: 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文件下载到本地文件:: 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]字节的内容:: 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:: 1. 下载内容也可以存储到文件中 2. 注意下载的区间为闭区间 条件下载 ======================== 下载文件时,可以指定限定条件,满足限定条件时下载,不满足时报错,不下载文件。可以使用的限定条件如下: =================== ============================================================== ==================================== 参数 说明 S3Client对应值 =================== ============================================================== ==================================== If-Modified-Since 如果指定的时间早于实际修改时间,则正常传送。否则返回错误 IfModifiedSince =================== ============================================================== ==================================== :: getObject(['Bucket'=>$bucketName, 'Key'=>$objectName, 'IfModifiedSince'=>$lastMod]); echo $result['Body'] . "\n"; } catch (\Aws\Exception\AwsException $e){ echo $e->getMessage(); } } .. attention:: 1. 下载内容也可以存储到文件中