2017-02-22 125 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