2017-06-14 47 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') 

应该解决您的问题。