图片加载到DynamoDB使用:PHP,Ubuntu,EC2亚马逊网络服务



我正试图将通过HTML表单提供的图像加载到Dynamo Db表中。

我正在对图像加载部分进行硬编码,但稍后我想取消注释:

$con=file_get_contents( basename($_FILES["fileToUpload"]["name"]) );

并将任何图像上传到DynamoDB。

这是html文件:

<form action="upload-download-dynamodb.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>

这是上传-下载-发电机.php

<?php
// Convert image to binary 
    //$con=file_get_contents( basename($_FILES["fileToUpload"]["name"]) ); 
            $con=file_get_contents("Tuan.jpg");
                        $en=base64_encode($con);
                        $mime='image/gif';
                        $binary_data='data:' . $mime . ';base64,' . $en ;
?>
                  <img src="<?php echo $binary_data; ?>" alt="Test">
<?php
//  Connect to Dynamodb 
require './awssdkphp/aws-autoloader.php';
use AwsDynamoDbDynamoDbClient;
$client = DynamoDbClient::factory(array(
    'profile' => 'default',
    'region' => 'us-east-1'  // replace with your desired region
));
//  Put item inside a table 
$responsePut = $client->putItem(array(
    'TableName' => 'saleItems', 
    'Item' => array(
         'itemID'  => array('N' => 11 ), // Primary  
         'picture' => array('B' => openssl_random_pseudo_bytes(5)), 
         'array' => array('S' =>  $en),
         'description' => array ('S' => "picture description"  )
                   )
));
?>

如果我在终端中运行"upload-download-dynoldb.php"代码,它会很好地工作(e.I.php upload-doownload-dynostb.php)。如果我在浏览器(Firefox)上执行"upload-download-dennostb.php",则会显示图像,但数据不会上传到Dynamo DB中的"saleItems"表中。

有什么想法吗?为什么当我通过终端执行图片时,"上传下载dynamodb.php"代码会将图片加载到dynamodb中,而当我在浏览器中执行时却不会加载(点击刷新按钮)?

顺便说一句,我授予了upload-download-dynoldb.html、upload-doownload-dynodb.php和Tuan.jpg的完全权限。

好吧,我终于弄清楚发生了什么。

我有我的证书作为环境变量在终端。出于某种原因,当我通过html文件执行upload-download-dynoldb.PHP时,PHP无法访问这些凭据。

我通过添加以下代码行将凭据硬编码到upload-download-dynoldb.php文件中:

use AwsCommonCredentialsCredentials;
$credentials = new Credentials('YOUR_ACCESS_KEY','YOUR_SECRET_KEY');
$client = DynamoDbClient::factory(array(
    'profile' => 'default',
    'region' => 'us-east-1',  // replace with your desired region
    'credentials' => $credentials
));

现在代码运行良好。

最新更新