我想为用户提供直接上传功能。我的意思是不是从他们的电脑上传,他们也应该从外部源(完整的网址到img将是我的来源)上传图像到我的Amazon S3存储桶。
但我的服务真的很重。如果我将图像保存到我的VPS,在S3上传之前,这将终止我的VPS服务器。在上传到S3之前,我可以直接上传而不保存文件。
我可以检查远程源上的大小,扩展名等吗?
目前使用此脚本,他们只会上传一个上传表单。
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
//Here you can add valid file extensions.
$valid_formats = array("jpg", "png", "gif", "bmp","jpeg","PNG","JPG","JPEG","GIF","BMP");
$msg='';
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$name = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$tmp = $_FILES['file']['tmp_name'];
print_r($_FILES);
$ext = getExtension($name);
if(strlen($name) > 0) {
// File format validation
if(in_array($ext,$valid_formats)) {
// File size validation
if($size<(1024*1024)) {
include('amazons3/s3_config.php');
//Rename image name.
$actual_image_name = time().".".$ext;
if($s3->putObjectFile($tmp, $bucket , $actual_image_name, S3::ACL_PUBLIC_READ) ) {
$msg = "S3 Upload Successful.";
$s3file='http://'.$bucket.'.s3.amazonaws.com/'.$actual_image_name;
echo "<img src='$s3file'/>";
echo 'S3 File URL:'.$s3file;
}
else {
$msg = "S3 Upload Fail.";
}
}
else {
$msg = "Image size Max 1 MB";
}
}
else {
$msg = "Invalid file, please upload image file.";
}
}
else {
$msg = "Please select image file.";
}
}
我应该如何通过网址上传来实现?
如何控制图像的扩展名,大小等,就像我当前的验证一样?