2017-02-22 12 views
0

Я пытаюсь загрузить файлы на amazon EC2 с Android. однако всякий раз, когда я иду на загрузку файлов, я получаю ошибку «Неожиданный код ответа 500». Насколько я понимаю, это потому, что у пользователя нет правильных разрешений на загрузку файлов в базу данных? Я знаю, что проблема связана с экземпляром Amazon EC2, а не с кодом. но ниже мой PHP-код для загрузки на сервер. Прежде всего, это правильный способ войти в папку для загрузки (/ var/www/html/uploads)? Любая помощь в том, как я могу получить эту работу, будет отличной.Как загрузить файлы в amazon 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"; 
    } 
} 

?> 

ответ

0

Всего несколько нот:

Во-первых, вы должны убедиться в том, чтобы отправить данные из приложения с ENCTYPE из multipart/form-data перед отправкой на сервер.

Во-вторых, попробовать варианты этого упрощенного кода:

if(isset($_FILES['image'])) 
{ 
    $fileTmp = $_FILES['image']['tmp_name']; 
    $fileName = $_FILES['image']['name']; 

    move_uploaded_file($fileTmp, "/var/www/html/uploads/" . $fileName); 
    echo "Success"; 
} 
else 
{ 
    echo "Error"; 
} 

И, наконец, при условии, что вы используете Apache и имя пользователя WWW-данные, вам необходимо убедиться, что он может написать на upload folder:

sudo chown www-data:www-data /var/www/html/uploads 
sudo chmod 755 /var/www/html/uploads 
+0

но я получаю сообщение об ошибке, когда я пытаюсь выполнить эту команду chown, нет пользователя www-data. Я довольно новичок в этом ... является пользователем www-data любым пользователем, который пытается подключиться к внешнему устройству? и как я могу найти, что этот пользователь находится в моей базе данных? – Phill

+0

Во многих дистрибутивах Linux www-data - это пользователь, под которым работает веб-сервер Apache. Это означает, что все, что сделано в Apache, скриптах PHP в этом случае, выполняется с разрешениями этого пользователя и группы. Я предположил, что вы используете веб-сервер Apache, если нет, то, что вы используете на своем сервере для обработки запросов от вашего приложения Android? – avip