Загрузить файл на сервер Amazon EC2 с веб-сайта с помощью PHP - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть веб-сайт (bedatify.com), и я хочу создать страницу, на которой люди могли бы загружать свои изображения на мой сервер amazon EC2.Я проверил похожие вопросы, такие как Невозможно загрузить файлы на Amazon EC2 - php и , как загрузить файлы на amazon EC2 , но я не понимаю, как им управлять!Является ли этот кусок кода хорошим началом?Что я должен изменить, чтобы позволить пользователю загружать изображения прямо на мой сервер EC2 с моего сайта?

<?php
if(isset($_POST['image'])){
    echo "in";
    $image = $_POST['image'];
    upload($_POST['image']);
    exit;
}
else{
    echo "image_not_in";
    exit;
}


function upload($image){
    $now = DateTime::createFromFormat('U.u', microtime(true));
    $id = "pleeease";

    $upload_folder = "/var/www/html/upload";
    $path = "$upload_folder/$id.jpg";

    if(file_put_contents($path, base64_decode($image)) != false){
        echo "uploaded_success"
    }
    else{
        echo "uploaded_failed";
    }
}

?>

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

uploadfile.php

<?php
$IAM_KEY = 'xxxx';
$IAM_SECRET = 'xxxx';
$bucket = 'xxxx';


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

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1',
    'credentials' => [
        'key' => $IAM_KEY,
        'secret' => $IAM_SECRET
    ]
]);


$file = $_FILES["fileToUpload"]["tmp_name"];


try {
    // Upload data.
    $result = $s3->putObject([
        'Bucket' => $bucket,
        'Key'    => 'xxx',
        'SourceFile' => $file
    ]);

    // Print the URL to the object.
} catch (S3Exception $e) {
    echo $e->getMessage() . PHP_EOL;
}    
?>

index.html

<form action="/AWS/uploadfile.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>
0 голосов
/ 18 декабря 2018

Just a Tipp: это идеальный вариант использования для S3.

Так что загрузите и получите его с S3 в вашем Php Backend.Если вы загрузите его в свой экземпляр EC2, статические файлы могут заполнить пространство вашего экземпляра.Что, если экземпляр будет завершен?

Существует PHP SDK, который вы можете использовать: https://aws.amazon.com/de/sdk-for-php/

Примером может быть:

use Aws\S3\MultipartUploader;
use Aws\Exception\MultipartUploadException;

$uploader = new MultipartUploader($s3Client, '/path/to/large/file.zip', [
    'bucket' => 'your-bucket',
    'key'    => 'my-file.zip',
]);

try {
    $result = $uploader->upload();
    echo "Upload complete: {$result['ObjectURL']}\n";
} catch (MultipartUploadException $e) {
    echo $e->getMessage() . "\n";
}

Надеюсь, это поможет!

Доминик

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...