Я пытаюсь загрузить файл в свою корзину Amazon S3. У моего друга это работало на нашем сайте в прошлом, но через год его разорило, и я не могу понять, что случилось. Мы используем S3 PHP library, разработанный Geoff gaudreault.Как загрузить файл на amazon S3 с помощью Codeigniter/PHP?
Эта библиотека выглядит довольно простой для меня, действительно, похоже, что есть одна ключевая функция: putObject()
.
К сожалению, я даже не выхожу из ворот. Я получаю следующее сообщение об ошибке: Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.
Вот мой CodeIgniter PHP для моей формы загрузки action
:
function s3(){
$config['upload_path'] = $_SERVER["DOCUMENT_ROOT"].'/temp/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '1000000';
$config['max_width'] = '1024000';
$config['max_height'] = '768000';
$this->load->library('upload', $config);
if (! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
print_r($error);
echo 'failure';
}
else
{
$data = array('upload_data' => $this->upload->data());
$fn = $data['file_name'];
$type = substr($fn, strrpos($fn, '.') + 1);
$this->load->library('s3');
$temp_file_path = $_SERVER["DOCUMENT_ROOT"]."/temp/" . $data['file_name'];
$contents = read_file($temp_file_path); // will this blow up or timeout for large files?!
$newFileName = uniqid().".".substr($temp_file_path, strrpos($temp_file_path, '.') + 1);
$contentPath = "mysite.com/Images";
$this->s3->putObject($newFileName, $contents, $contentPath, 'private', $type);
echo 'success';
}
}
Кто-нибудь есть какие-либо мысли?
возможно дубликат [Error 324 пустого ответа на приложении, размещенные by AWS] (http://stackoverflow.com/questions/8861404/error-324-empty-response-on-application-hosted-by-aws) –
привет, Колин, я не знаю, как получить доступ к моему S3-серверу из командной строки. Мой сервер EC2 /etc/apache2/error.log не упоминает об этой ошибке 324. мысли? –
Прежде всего, вы можете использовать функциональные возможности в CodeIgniter для имени файла/пути и т. Д. Во-первых, вы можете использовать опцию 'encrypt_name' вместо генерации' $ newFileName' вручную. Во-вторых, '$ data ['full_path']' содержит полный путь к загруженному файлу, '$ data ['file_ext']' содержит расширение файла и, наконец, вместо использования '$ _SERVER ['DOCUMENT_ROOT']' вы должны просто используйте '$ config ['upload_path'] = './temp';' Скрипт загрузки принимает путь относительно index.php в вашем корне. HTH – Gavin