我已经创建了一个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
任何人都可以帮我修复此错误
答案 0 :(得分:2)
如果您的PHP文件包含在位于其他位置的其他文件中,则代码将使用该文件路径作为基础。
基本上包括&#34; copys&#34;包含文件的内容到您的脚本中,这使得路径相对于父脚本而不是包含的脚本。
要解决此问题,您可以使用魔术常量__DIR__
,它返回文件本身的绝对路径。
如此改变:
fopen('uploads/' . $filename, 'wb')
到
fopen(__DIR__ . '/uploads/' . $filename, 'wb')
应解决您的问题。