发布S3图像文件请求

时间:2016-10-04 09:04:43

标签: php jquery image post amazon-s3

我有一个PHP脚本从亚马逊S3中提取一个名为test.php的图像文件 如果我像这样编写html <img src="test.php">图像显示正常。

然而,当我尝试使用get请求并设置图像的SRC时,它并没有正确显示。一旦这个工作,我最终想要使用post来传递params。在检查已填充元数据的src时,如同标题(“内容类型:图像”)尚未设置。

$.get( "test.php",function( data ) {
    $('#image1').attr('src', data);     

});

我的test.php脚本:

require '../vendor/autoload.php';
use Aws\S3\S3Client;

$region = 'us-west-2';
$bucket = 'mybucket';
$key = 'mykey';
$secret = 'mysecret';


$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => $region,
    'credentials' => [
        'key'    => $key,
        'secret' => $secret,
    ],
]);

$result = $s3Client->getObject(array(
    'Bucket' => $bucket,
    'Key'    => 'monkey1.jpg'

));
header("Content-type: image");
// Print the body of the result by indexing into the result object.
echo $result['Body'];
//echo '<img src="'.$result['Body'].'">'

2 个答案:

答案 0 :(得分:1)

获取对象URL的时间并将其加载到页面

$result = $s3->get_object_url($bucket, 'monkey1.jpg', '1 minute');
从这里你可以将图像加载到页面!

echo '<img src="'.$result.'">

答案 1 :(得分:1)

这对我有用。

PHP脚本

$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => $region,
    'credentials' => [
        'key'    => $key,
        'secret' => $secret,
    ],
]);

$s3Client->registerStreamWrapper();
if (file_exists('s3://'.$bucket.'/'.$id.'/'.$filepath)) {
    //echo 'It exists!';
    $result = $s3Client->getObject(array(
    'Bucket' => $bucket,
    //'Key'    => 'monkey1.jpg'
    'Key'    => $id.'/'.$filepath
    ));
    header("Content-type: image/*");
    // Print the body of the result by indexing into the result object.
    echo base64_encode($result['Body']);
}

JS

$('#image').attr('src', 'data:image/*;base64,'+data);