2016-07-27 2 views
0

Я использую PHP для загрузки файла в s3, мои коды работают правильно, однако когда файл выбирает для загрузки очень тяжелый, как 4 операции MB терпит неудачу, и у меня есть эта ошибка:Загрузить файл s3 с PHP

NoSuchKey указанный ключ не exist.1469625998.pdf136D99DB27E5B57FE6UXAbj45afkoAlfysDm2 + EPhBqHOhwc64gaG1w/b1AXAsfhnF7qwlankwuflh + ZO1sf/JBe6tA =

Но когда файл составляет около 1,3 Мб, загрузить успех. ниже мои коды:

$name = $_FILES['file']['name']; 
$tmp = $_FILES['file']['tmp_name']; 
include('s3folder/s3_config.php'); 
$s3->putObjectFile($tmp, $bucket , $name, S3::ACL_PUBLIC_READ); 

Я задаюсь вопросом, почему любой размер файла не может быть загружен, так как я не указать любой размер файла, как если ($ размер < (1024 * 1024)) !

+1

Проверьте настройки php 'post_max_size' и' upload_max_filesize' ini. Я думаю, что он ограничен размером менее 4 МБ. – Pieter

+0

мой сайт размещен в amazon aws, я не знаю, как это сделать. – Diasline

+1

Создайте php-файл с содержимым ' Pieter

ответ

0

Скачать скрипт here который содержит 4 файла

  • S3.php // Amazon S3 файл библиотеки
  • s3_config.php // Ключ файла конфигурации
  • image_check.php // Файл валидатор
  • index.php

s3_config.php

<?php 
// Bucket Name 
$bucket="BucketName"; 
if (!class_exists('S3'))require_once('S3.php'); 

//AWS access info 
if (!defined('awsAccessKey')) define('awsAccessKey', 'ACCESS_KEY'); 
if (!defined('awsSecretKey')) define('awsSecretKey', 'ACCESS_Secret_KEY'); 

$s3 = new S3(awsAccessKey, awsSecretKey); 
$s3->putBucket($bucket, S3::ACL_PUBLIC_READ); 
?> 

index.php Файл содержит PHP и HTML код отправить форму.

<?php 
include('image_check.php'); // getExtension Method 
$msg=''; 
if($_SERVER['REQUEST_METHOD'] == "POST") 
{ 
$name = $_FILES['file']['name']; 
$size = $_FILES['file']['size']; 
$tmp = $_FILES['file']['tmp_name']; 
$ext = getExtension($name); 

if(strlen($name) > 0) 
{ 
// File format validation 
if(in_array($ext,$valid_formats)) 
{ 
// File size validation 
if($size<(1024*1024)) 
{ 
include('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."; 

} 
?> 

//HTML Code 
<form action="" method='post' enctype="multipart/form-data"> 
Upload image file here 
<input type='file' name='file'/> <input type='submit' value='Upload Image'/> 
<?php echo $msg; ?> 
</form> 

Создайте ковш и щелкните правой кнопкой мыши, выберите свойства, добавьте разрешение.

image_check.php Этот файл поможет вам получить расширение файла.

<?php 
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"); 
?> 
+0

Это, как правило, файлы, которые я использую, я сделал некоторые изменения, например, сохранил $ s3file в таблице и другую переменную post из формы. Каждый думает о работе, но если размер файла составляет около 4 МБ, он не может сохранить его в s3. – Diasline

Смежные вопросы