【问题标题】:Upload file to Amazon EC2 server from website by PHP通过 PHP 将文件从网站上传到 Amazon EC2 服务器
【发布时间】:2018-12-18 11:39:47
【问题描述】:
我有一个网站 (bedatify.com),我想创建一个页面,人们可以在其中将他们的图像上传到我的亚马逊 EC2 服务器。
我检查了类似的问题,例如
Unable to upload files on Amazon EC2 - php 和 how to upload to files to amazon EC2
但我不知道如何管理它!
这段 f 代码是一个好的开始吗?为了让用户从我的网站直接将图片上传到我的 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";
}
}
?>
【问题讨论】:
标签:
php
amazon-web-services
server
【解决方案1】:
只是一个提示:
这是 S3 的完美用例。
因此,从您的 Php 后端中的 S3 上传并检索它。
如果您将其上传到您的 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";
}
希望对你有帮助!
多米尼克
【解决方案2】:
上传文件.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>