用于上传图片的API无效

时间:2017-06-14 06:48:19

标签: php android image api

我已经创建了一个API,因此android应用程序可以连接到网站我遇到的问题是我无法提供访问权限提供API将图像上传到服务器,因为我现在创建了所以图像将保存为base64代码,但主要的问题是,当每个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;

}

这是用于拨打电话的网址

www.domainname.com/api/api.php?action=upload_photo&fimename=(filename)&amp; image = iamge nae

任何人都可以帮我修复此错误

1 个答案:

答案 0 :(得分:2)

如果您的PHP文件包含在位于其他位置的其他文件中,则代码将使用文件路径作为基础。

基本上包括&#34; copys&#34;包含文件的内容到您的脚本中,这使得路径相对于父脚本而不是包含的脚本。

要解决此问题,您可以使用魔术常量__DIR__,它返回文件本身的绝对路径。

如此改变:

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

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

应解决您的问题。