2017-06-14 35 views
-2

我已經創建了一個API,所以android應用程序可以連接到網站我面對的問題是我無法提供訪問權限以便將圖像上傳到服務器,至此我已創建所以圖像將作爲base64代碼保存,但主要問題是,當每個API調用和圖像上傳它給我一個圖像錯誤,沒有找到無法加載文件流。下面是我得到用於上傳圖像的API不起作用

<b>Warning</b>: fopen(uploads/testimg.png): failed to open stream: No such 

file or directory in <b>/home/begazed/public_html/api/classfiles/Photo.php</b> on line <b>87</b><br /> 
<br /> 
<b>Warning</b>: fwrite() expects parameter 1 to be resource, boolean given in <b>/home/begazed/public_html/api/classfiles/Photo.php</b> on line <b>88</b><br /> 
<br /> 
<b>Warning</b>: fclose() expects parameter 1 to be resource, boolean given in <b>/home/begazed/public_html/api/classfiles/Photo.php</b> on line <b>89</b><br /> 
{"result":1,"message":"Image upload complete, Please check your php file directory"} 

這個錯誤是我創建上傳圖像到服務器的功能

function upload_photo($connect, $base, $filename) {  
     $binary = base64_decode($base); 

     $query = $connect->prepare("INSERT INTO test_photo (filename) VALUES (:filename)"); 
     $query->execute(array(':filename' => $filename)); 

     header('Content-Type: bitmap; charset=utf-8'); 

     $file = fopen('uploads/'.$filename, 'wb'); 
     fwrite($file, $binary); 
     fclose($file); 
     $err['result'] = 1; 
     $err['message'] = 'Image upload complete, Please check your php file directory'; 
     return json_encode($err); 
    } 

從那裏請求被處理了主要的API文件

switch($action) 
    { 
    case 'upload_photo': 
    $base  = $_REQUEST['image']; 
    $filename = $_REQUEST['filename']; 

    echo $retval = $photo->upload_photo($connect, $base, $filename); 
break; 

default: 
    echo "Invalid Request"; 
break; 

}

tthis是用於撥打電話的網址

www.domainname.com/api/api.php?action=upload_photo & fimename =(文件名)&圖像= iamge NAE

誰能幫我如果你的PHP的來解決這個錯誤

+0

沒有人可以幫助我:-( –

回答

2

文件是從另一個文件包含的,位於其他地方,那麼代碼將使用文件路徑作爲基礎。

基本上包含「複製」包含文件的內容到腳本中,這使得路徑與父腳本相關,而不是包含腳本。

要解決這個問題,你可以使用魔術常數__DIR__,它返回文件本身的絕對路徑。

因此改變:

fopen('uploads/' . $filename, 'wb') 

fopen(__DIR__ . '/uploads/' . $filename, 'wb') 

應該解決您的問題。