我试图将文件从Amazon s3下载到本地存储。下载成功,文件出现在本地存储中,但文件为空无内容。看起来好像错过了代码中的某些内容。需要您的帮助的朋友。在此先感谢
这是代码:
<?php
namespace App\Console\Library;
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
use Storage;
class DownloadAWS
{
public function downloadFile(){
$s3_file = Storage::cloud()->url('Something.jsonl');
$s3 = Storage::disk('local')->put('Order.jsonl', $s3_file);
}
}
答案 0 :(得分:1)
当前,您正在检索s3文件的URL,并将其放入文件中。您的代码当前应该创建一个文件Order.jsonl
,其中包含s3文件的链接。
您真正想要的是获取文件并将其存储在本地。您可以使用以下代码实现此目标:
public function downloadFile()
{
$s3_file = Storage::cloud()->get('Something.jsonl');
$s3 = Storage::disk('local')->put('Order.jsonl', $s3_file);
}
唯一的区别是使用get()
与url()
。
答案 1 :(得分:1)
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-1'
]);
try {
// Get the object.
$result = $s3->getObject([
'Bucket' => $bucket,
'Key' => $keyname
]);
// Display the object in the browser.
header("Content-Type: {$result['ContentType']}");
echo $result['Body'];
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;