2017-02-22 123 views
0

我想从android上传文件到亚马逊EC2。然而,无论何时我上传文件,我都会收到意外的响应代码500错误。从我理解这是因为用户没有正确的权限上传文件到数据库?我知道问题出在亚马逊EC2实例上,而不是代码上。但下面是我的PHP代码上传到服务器。首先是进入上传文件夹(/ var/www/html/uploads)的正确方法?任何帮助我如何能够得到这个工作将是伟大的。如何上传到亚马逊的文件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

就在几个注意事项:

首先,你应该确保从应用程序与multipart/form-data的ENCTYPE提交给服务器之前发送数据。

其次,尽量的这种简化代码的变种:

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数据,你需要确保它可以写上传文件夹:

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

但我得到一个错误,当我尝试做那个chown命令,没有www数据用户。我对此很新...是www-data用户谁试图从外部设备连接的任何用户?以及如何找到我的数据库上的用户? – Phill

+0

在许多Linux发行版上,www-data是运行Apache Web服务器的用户。这意味着在这个实例中,Apache所做的所有事情都是通过该用户和组的权限完成的。我假设你正在运行Apache Web服务器,如果没有,你在你的服务器上运行什么来处理你的Android应用程序的请求? – avip